From bc42893cceed7f66c1eba5bea6bc39d93860d51e Mon Sep 17 00:00:00 2001 From: Jacob Boykin Date: Thu, 23 Apr 2026 18:09:13 -0400 Subject: [PATCH 1/7] feat(api): add ListStageSummaries and WatchStageSummaries RPCs Adds a lightweight Stage projection for list and graph views that need metadata and current state for many Stages at once but do not need the full Stage CR. The summary omits FreightHistory entries beyond the current FreightCollection, PromotionTemplate step configuration, and Verification configuration. Use GetStage to retrieve the full Stage resource when detail fields are needed. Both endpoints are available in ConnectRPC and REST (GET /v1beta1/projects/{project}/stage-summaries, including ?watch=true for SSE). Requests accept an optional freightOrigins filter and a resourceVersion for the standard list-then-watch pattern. Signed-off-by: Jacob Boykin Signed-off-by: Jacob Boykin --- api/service/v1alpha1/service.pb.go | 12359 ++++++++-------- api/service/v1alpha1/service.proto | 114 + .../svcv1alpha1connect/service.connect.go | 74 + docs/docs/90-api-documentation.md | 76 + pkg/client/generated/core/core_client.go | 53 + .../core/list_stage_summaries_parameters.go | 194 + .../core/list_stage_summaries_responses.go | 104 + ..._v1alpha1_list_stage_summaries_response.go | 133 + ...api_service_v1alpha1_stage_spec_summary.go | 141 + ...i_service_v1alpha1_stage_status_summary.go | 242 + ...argo_api_service_v1alpha1_stage_summary.go | 133 + pkg/server/list_stage_summaries_v1alpha1.go | 227 + .../list_stage_summaries_v1alpha1_test.go | 262 + pkg/server/rest_router.go | 1 + pkg/server/stage_to_summary.go | 82 + pkg/server/stage_to_summary_test.go | 179 + pkg/server/watch_stage_summaries_v1alpha1.go | 87 + .../watch_stage_summaries_v1alpha1_test.go | 202 + swagger.json | 171 + .../service-KargoService_connectquery.ts | 10 + ui/src/gen/api/service/v1alpha1/service_pb.ts | 601 +- ui/src/gen/api/v2/core/core.ts | 174 + ...rviceV1alpha1ListStageSummariesResponse.ts | 18 + ...KargoApiServiceV1alpha1StageSpecSummary.ts | 24 + ...rgoApiServiceV1alpha1StageStatusSummary.ts | 32 + ...uityKargoApiServiceV1alpha1StageSummary.ts | 19 + ui/src/gen/api/v2/models/index.ts | 5 + .../api/v2/models/listStageSummariesParams.ts | 14 + 28 files changed, 9804 insertions(+), 5927 deletions(-) create mode 100644 pkg/client/generated/core/list_stage_summaries_parameters.go create mode 100644 pkg/client/generated/core/list_stage_summaries_responses.go create mode 100644 pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_list_stage_summaries_response.go create mode 100644 pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_spec_summary.go create mode 100644 pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_status_summary.go create mode 100644 pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_summary.go create mode 100644 pkg/server/list_stage_summaries_v1alpha1.go create mode 100644 pkg/server/list_stage_summaries_v1alpha1_test.go create mode 100644 pkg/server/stage_to_summary.go create mode 100644 pkg/server/stage_to_summary_test.go create mode 100644 pkg/server/watch_stage_summaries_v1alpha1.go create mode 100644 pkg/server/watch_stage_summaries_v1alpha1_test.go create mode 100644 ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse.ts create mode 100644 ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSpecSummary.ts create mode 100644 ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageStatusSummary.ts create mode 100644 ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSummary.ts create mode 100644 ui/src/gen/api/v2/models/listStageSummariesParams.ts diff --git a/api/service/v1alpha1/service.pb.go b/api/service/v1alpha1/service.pb.go index 4822f1fef8..1cbfb24255 100644 --- a/api/service/v1alpha1/service.pb.go +++ b/api/service/v1alpha1/service.pb.go @@ -14,7 +14,8 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" anypb "google.golang.org/protobuf/types/known/anypb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - v1 "k8s.io/api/core/v1" + v11 "k8s.io/api/core/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" reflect "reflect" sync "sync" ) @@ -2184,16 +2185,26 @@ func (*DeleteStageResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{35} } -type GetClusterConfigRequest struct { +// StageSummary is a lightweight projection of a Stage resource intended for +// use by clients rendering list or graph views of many stages. It omits +// heavy fields that are only needed when a single stage is inspected in +// detail (e.g. full FreightHistory beyond the current FreightCollection, +// PromotionTemplate step configuration, and Verification configuration). +type StageSummary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Format RawFormat `protobuf:"varint,1,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` + // metadata contains the Stage's identity and Kubernetes object metadata. + Metadata *v1.ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"` + // spec contains the subset of StageSpec fields needed by list/graph views. + Spec *StageSpecSummary `protobuf:"bytes,2,opt,name=spec,proto3,oneof" json:"spec,omitempty"` + // status contains the subset of StageStatus fields needed by list/graph views. + Status *StageStatusSummary `protobuf:"bytes,3,opt,name=status,proto3,oneof" json:"status,omitempty"` } -func (x *GetClusterConfigRequest) Reset() { - *x = GetClusterConfigRequest{} +func (x *StageSummary) Reset() { + *x = StageSummary{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2201,13 +2212,13 @@ func (x *GetClusterConfigRequest) Reset() { } } -func (x *GetClusterConfigRequest) String() string { +func (x *StageSummary) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClusterConfigRequest) ProtoMessage() {} +func (*StageSummary) ProtoMessage() {} -func (x *GetClusterConfigRequest) ProtoReflect() protoreflect.Message { +func (x *StageSummary) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2219,32 +2230,56 @@ func (x *GetClusterConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetClusterConfigRequest.ProtoReflect.Descriptor instead. -func (*GetClusterConfigRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use StageSummary.ProtoReflect.Descriptor instead. +func (*StageSummary) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{36} } -func (x *GetClusterConfigRequest) GetFormat() RawFormat { +func (x *StageSummary) GetMetadata() *v1.ObjectMeta { if x != nil { - return x.Format + return x.Metadata } - return RawFormat_RAW_FORMAT_UNSPECIFIED + return nil } -type GetClusterConfigResponse struct { +func (x *StageSummary) GetSpec() *StageSpecSummary { + if x != nil { + return x.Spec + } + return nil +} + +func (x *StageSummary) GetStatus() *StageStatusSummary { + if x != nil { + return x.Status + } + return nil +} + +// StageSpecSummary is the subset of StageSpec fields returned by +// ListStageSummaries. See StageSummary for the motivation. +type StageSpecSummary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Result: - // - // *GetClusterConfigResponse_ClusterConfig - // *GetClusterConfigResponse_Raw - Result isGetClusterConfigResponse_Result `protobuf_oneof:"result"` + // shard is the name of the shard that the Stage belongs to, mirroring + // StageSpec.shard. + Shard string `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` + // requestedFreight mirrors StageSpec.requestedFreight. This is needed in + // full to render graph edges between Stages and their upstream sources. + RequestedFreight []*v1alpha1.FreightRequest `protobuf:"bytes,2,rep,name=requestedFreight,proto3" json:"requestedFreight,omitempty"` + // promotionStepCount is the number of promotion steps defined in the + // Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. + // Use GetStage to retrieve the full step configuration. + PromotionStepCount int32 `protobuf:"varint,3,opt,name=promotionStepCount,proto3" json:"promotionStepCount,omitempty"` + // hasVerification indicates whether the Stage defines a Verification. + // Use GetStage to retrieve the full Verification configuration. + HasVerification bool `protobuf:"varint,4,opt,name=hasVerification,proto3" json:"hasVerification,omitempty"` } -func (x *GetClusterConfigResponse) Reset() { - *x = GetClusterConfigResponse{} +func (x *StageSpecSummary) Reset() { + *x = StageSpecSummary{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2252,13 +2287,13 @@ func (x *GetClusterConfigResponse) Reset() { } } -func (x *GetClusterConfigResponse) String() string { +func (x *StageSpecSummary) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClusterConfigResponse) ProtoMessage() {} +func (*StageSpecSummary) ProtoMessage() {} -func (x *GetClusterConfigResponse) ProtoReflect() protoreflect.Message { +func (x *StageSpecSummary) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2270,56 +2305,68 @@ func (x *GetClusterConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetClusterConfigResponse.ProtoReflect.Descriptor instead. -func (*GetClusterConfigResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use StageSpecSummary.ProtoReflect.Descriptor instead. +func (*StageSpecSummary) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{37} } -func (m *GetClusterConfigResponse) GetResult() isGetClusterConfigResponse_Result { - if m != nil { - return m.Result +func (x *StageSpecSummary) GetShard() string { + if x != nil { + return x.Shard } - return nil + return "" } -func (x *GetClusterConfigResponse) GetClusterConfig() *v1alpha1.ClusterConfig { - if x, ok := x.GetResult().(*GetClusterConfigResponse_ClusterConfig); ok { - return x.ClusterConfig +func (x *StageSpecSummary) GetRequestedFreight() []*v1alpha1.FreightRequest { + if x != nil { + return x.RequestedFreight } return nil } -func (x *GetClusterConfigResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetClusterConfigResponse_Raw); ok { - return x.Raw +func (x *StageSpecSummary) GetPromotionStepCount() int32 { + if x != nil { + return x.PromotionStepCount } - return nil -} - -type isGetClusterConfigResponse_Result interface { - isGetClusterConfigResponse_Result() -} - -type GetClusterConfigResponse_ClusterConfig struct { - ClusterConfig *v1alpha1.ClusterConfig `protobuf:"bytes,1,opt,name=cluster_config,json=clusterConfig,proto3,oneof"` + return 0 } -type GetClusterConfigResponse_Raw struct { - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +func (x *StageSpecSummary) GetHasVerification() bool { + if x != nil { + return x.HasVerification + } + return false } -func (*GetClusterConfigResponse_ClusterConfig) isGetClusterConfigResponse_Result() {} - -func (*GetClusterConfigResponse_Raw) isGetClusterConfigResponse_Result() {} - -type DeleteClusterConfigRequest struct { +// StageStatusSummary is the subset of StageStatus fields returned by +// ListStageSummaries. See StageSummary for the motivation. +type StageStatusSummary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // conditions mirrors StageStatus.conditions. + Conditions []*v1.Condition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"` + // lastHandledRefresh mirrors StageStatus.lastHandledRefresh. + LastHandledRefresh string `protobuf:"bytes,2,opt,name=lastHandledRefresh,proto3" json:"lastHandledRefresh,omitempty"` + // currentFreight is the FreightCollection currently deployed to the Stage + // (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has + // been deployed. Use GetStage to retrieve the full FreightHistory. + CurrentFreight *v1alpha1.FreightCollection `protobuf:"bytes,3,opt,name=currentFreight,proto3,oneof" json:"currentFreight,omitempty"` + // currentPromotion mirrors StageStatus.currentPromotion. + CurrentPromotion *v1alpha1.PromotionReference `protobuf:"bytes,4,opt,name=currentPromotion,proto3,oneof" json:"currentPromotion,omitempty"` + // lastPromotion mirrors StageStatus.lastPromotion. + LastPromotion *v1alpha1.PromotionReference `protobuf:"bytes,5,opt,name=lastPromotion,proto3,oneof" json:"lastPromotion,omitempty"` + // health mirrors StageStatus.health. + Health *v1alpha1.Health `protobuf:"bytes,6,opt,name=health,proto3,oneof" json:"health,omitempty"` + // observedGeneration mirrors StageStatus.observedGeneration. + ObservedGeneration int64 `protobuf:"varint,7,opt,name=observedGeneration,proto3" json:"observedGeneration,omitempty"` + // autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. + AutoPromotionEnabled bool `protobuf:"varint,8,opt,name=autoPromotionEnabled,proto3" json:"autoPromotionEnabled,omitempty"` } -func (x *DeleteClusterConfigRequest) Reset() { - *x = DeleteClusterConfigRequest{} +func (x *StageStatusSummary) Reset() { + *x = StageStatusSummary{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2327,13 +2374,13 @@ func (x *DeleteClusterConfigRequest) Reset() { } } -func (x *DeleteClusterConfigRequest) String() string { +func (x *StageStatusSummary) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteClusterConfigRequest) ProtoMessage() {} +func (*StageStatusSummary) ProtoMessage() {} -func (x *DeleteClusterConfigRequest) ProtoReflect() protoreflect.Message { +func (x *StageStatusSummary) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2345,19 +2392,85 @@ func (x *DeleteClusterConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteClusterConfigRequest.ProtoReflect.Descriptor instead. -func (*DeleteClusterConfigRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use StageStatusSummary.ProtoReflect.Descriptor instead. +func (*StageStatusSummary) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{38} } -type DeleteClusterConfigResponse struct { +func (x *StageStatusSummary) GetConditions() []*v1.Condition { + if x != nil { + return x.Conditions + } + return nil +} + +func (x *StageStatusSummary) GetLastHandledRefresh() string { + if x != nil { + return x.LastHandledRefresh + } + return "" +} + +func (x *StageStatusSummary) GetCurrentFreight() *v1alpha1.FreightCollection { + if x != nil { + return x.CurrentFreight + } + return nil +} + +func (x *StageStatusSummary) GetCurrentPromotion() *v1alpha1.PromotionReference { + if x != nil { + return x.CurrentPromotion + } + return nil +} + +func (x *StageStatusSummary) GetLastPromotion() *v1alpha1.PromotionReference { + if x != nil { + return x.LastPromotion + } + return nil +} + +func (x *StageStatusSummary) GetHealth() *v1alpha1.Health { + if x != nil { + return x.Health + } + return nil +} + +func (x *StageStatusSummary) GetObservedGeneration() int64 { + if x != nil { + return x.ObservedGeneration + } + return 0 +} + +func (x *StageStatusSummary) GetAutoPromotionEnabled() bool { + if x != nil { + return x.AutoPromotionEnabled + } + return false +} + +// ListStageSummariesRequest is the request for listing stage summaries +// within a project. +type ListStageSummariesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // project is the name of the project whose stage summaries should be listed. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // freightOrigins is an optional list of Warehouse names. When non-empty, + // only Stages that request Freight originating from at least one of the + // named Warehouses (directly or transitively via upstream Stages) will be + // returned. Mirrors ListStagesRequest.freightOrigins. + FreightOrigins []string `protobuf:"bytes,2,rep,name=freightOrigins,proto3" json:"freightOrigins,omitempty"` } -func (x *DeleteClusterConfigResponse) Reset() { - *x = DeleteClusterConfigResponse{} +func (x *ListStageSummariesRequest) Reset() { + *x = ListStageSummariesRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2365,13 +2478,13 @@ func (x *DeleteClusterConfigResponse) Reset() { } } -func (x *DeleteClusterConfigResponse) String() string { +func (x *ListStageSummariesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteClusterConfigResponse) ProtoMessage() {} +func (*ListStageSummariesRequest) ProtoMessage() {} -func (x *DeleteClusterConfigResponse) ProtoReflect() protoreflect.Message { +func (x *ListStageSummariesRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2383,19 +2496,42 @@ func (x *DeleteClusterConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteClusterConfigResponse.ProtoReflect.Descriptor instead. -func (*DeleteClusterConfigResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListStageSummariesRequest.ProtoReflect.Descriptor instead. +func (*ListStageSummariesRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{39} } -type WatchClusterConfigRequest struct { +func (x *ListStageSummariesRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *ListStageSummariesRequest) GetFreightOrigins() []string { + if x != nil { + return x.FreightOrigins + } + return nil +} + +// ListStageSummariesResponse contains a list of stage summaries within a project. +type ListStageSummariesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // stageSummaries is the list of StageSummary objects found in the project. + StageSummaries []*StageSummary `protobuf:"bytes,1,rep,name=stageSummaries,proto3" json:"stageSummaries,omitempty"` + // resourceVersion is the Kubernetes ResourceVersion of the underlying + // StageList. Clients may pass this value to WatchStageSummaries to begin + // watching from the exact point this list was taken, receiving only + // subsequent changes without redundant initial events. + ResourceVersion string `protobuf:"bytes,2,opt,name=resourceVersion,proto3" json:"resourceVersion,omitempty"` } -func (x *WatchClusterConfigRequest) Reset() { - *x = WatchClusterConfigRequest{} +func (x *ListStageSummariesResponse) Reset() { + *x = ListStageSummariesResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2403,13 +2539,13 @@ func (x *WatchClusterConfigRequest) Reset() { } } -func (x *WatchClusterConfigRequest) String() string { +func (x *ListStageSummariesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchClusterConfigRequest) ProtoMessage() {} +func (*ListStageSummariesResponse) ProtoMessage() {} -func (x *WatchClusterConfigRequest) ProtoReflect() protoreflect.Message { +func (x *ListStageSummariesResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2421,22 +2557,48 @@ func (x *WatchClusterConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchClusterConfigRequest.ProtoReflect.Descriptor instead. -func (*WatchClusterConfigRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListStageSummariesResponse.ProtoReflect.Descriptor instead. +func (*ListStageSummariesResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{40} } -type WatchClusterConfigResponse struct { +func (x *ListStageSummariesResponse) GetStageSummaries() []*StageSummary { + if x != nil { + return x.StageSummaries + } + return nil +} + +func (x *ListStageSummariesResponse) GetResourceVersion() string { + if x != nil { + return x.ResourceVersion + } + return "" +} + +// WatchStageSummariesRequest is the request for watching stage summaries via streaming. +type WatchStageSummariesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ClusterConfig *v1alpha1.ClusterConfig `protobuf:"bytes,1,opt,name=cluster_config,json=clusterConfig,proto3" json:"cluster_config,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // ADDED / MODIFIED / DELETED + // project is the name of the project whose stage summaries should be watched. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of a specific stage to watch, if empty all stages in the project are watched. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // freightOrigins is an optional list of Warehouse names. When non-empty, + // only events for Stages that request Freight originating from at least + // one of the named Warehouses (directly or transitively via upstream + // Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. + FreightOrigins []string `protobuf:"bytes,3,rep,name=freightOrigins,proto3" json:"freightOrigins,omitempty"` + // resourceVersion is an optional Kubernetes ResourceVersion. When set, + // the watch begins at the specified version, allowing clients to resume + // from a prior list or watch without missing or duplicating events. + ResourceVersion string `protobuf:"bytes,4,opt,name=resourceVersion,proto3" json:"resourceVersion,omitempty"` } -func (x *WatchClusterConfigResponse) Reset() { - *x = WatchClusterConfigResponse{} +func (x *WatchStageSummariesRequest) Reset() { + *x = WatchStageSummariesRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2444,13 +2606,13 @@ func (x *WatchClusterConfigResponse) Reset() { } } -func (x *WatchClusterConfigResponse) String() string { +func (x *WatchStageSummariesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchClusterConfigResponse) ProtoMessage() {} +func (*WatchStageSummariesRequest) ProtoMessage() {} -func (x *WatchClusterConfigResponse) ProtoReflect() protoreflect.Message { +func (x *WatchStageSummariesRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2462,39 +2624,53 @@ func (x *WatchClusterConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchClusterConfigResponse.ProtoReflect.Descriptor instead. -func (*WatchClusterConfigResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchStageSummariesRequest.ProtoReflect.Descriptor instead. +func (*WatchStageSummariesRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{41} } -func (x *WatchClusterConfigResponse) GetClusterConfig() *v1alpha1.ClusterConfig { +func (x *WatchStageSummariesRequest) GetProject() string { if x != nil { - return x.ClusterConfig + return x.Project + } + return "" +} + +func (x *WatchStageSummariesRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *WatchStageSummariesRequest) GetFreightOrigins() []string { + if x != nil { + return x.FreightOrigins } return nil } -func (x *WatchClusterConfigResponse) GetType() string { +func (x *WatchStageSummariesRequest) GetResourceVersion() string { if x != nil { - return x.Type + return x.ResourceVersion } return "" } -// ListPromotionsRequest is the request for retrieving all promotions, optionally filtered by stage. -type ListPromotionsRequest struct { +// WatchStageSummariesResponse contains stage summary change notifications. +type WatchStageSummariesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose promotions should be listed. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is an optional stage name to filter promotions by. - Stage *string `protobuf:"bytes,2,opt,name=stage,proto3,oneof" json:"stage,omitempty"` + // stageSummary is the StageSummary for the Stage that changed. + StageSummary *StageSummary `protobuf:"bytes,1,opt,name=stageSummary,proto3,oneof" json:"stageSummary,omitempty"` + // type indicates the type of change (ADDED, MODIFIED, DELETED). + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (x *ListPromotionsRequest) Reset() { - *x = ListPromotionsRequest{} +func (x *WatchStageSummariesResponse) Reset() { + *x = WatchStageSummariesResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2502,13 +2678,13 @@ func (x *ListPromotionsRequest) Reset() { } } -func (x *ListPromotionsRequest) String() string { +func (x *WatchStageSummariesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPromotionsRequest) ProtoMessage() {} +func (*WatchStageSummariesResponse) ProtoMessage() {} -func (x *ListPromotionsRequest) ProtoReflect() protoreflect.Message { +func (x *WatchStageSummariesResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2520,37 +2696,35 @@ func (x *ListPromotionsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPromotionsRequest.ProtoReflect.Descriptor instead. -func (*ListPromotionsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchStageSummariesResponse.ProtoReflect.Descriptor instead. +func (*WatchStageSummariesResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{42} } -func (x *ListPromotionsRequest) GetProject() string { +func (x *WatchStageSummariesResponse) GetStageSummary() *StageSummary { if x != nil { - return x.Project + return x.StageSummary } - return "" + return nil } -func (x *ListPromotionsRequest) GetStage() string { - if x != nil && x.Stage != nil { - return *x.Stage +func (x *WatchStageSummariesResponse) GetType() string { + if x != nil { + return x.Type } return "" } -// ListPromotionsResponse contains a list of promotions within a project. -type ListPromotionsResponse struct { +type GetClusterConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // promotions is the list of Promotion resources found in the project. - Promotions []*v1alpha1.Promotion `protobuf:"bytes,1,rep,name=promotions,proto3" json:"promotions,omitempty"` + Format RawFormat `protobuf:"varint,1,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *ListPromotionsResponse) Reset() { - *x = ListPromotionsResponse{} +func (x *GetClusterConfigRequest) Reset() { + *x = GetClusterConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2558,13 +2732,13 @@ func (x *ListPromotionsResponse) Reset() { } } -func (x *ListPromotionsResponse) String() string { +func (x *GetClusterConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPromotionsResponse) ProtoMessage() {} +func (*GetClusterConfigRequest) ProtoMessage() {} -func (x *ListPromotionsResponse) ProtoReflect() protoreflect.Message { +func (x *GetClusterConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2576,32 +2750,32 @@ func (x *ListPromotionsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPromotionsResponse.ProtoReflect.Descriptor instead. -func (*ListPromotionsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetClusterConfigRequest.ProtoReflect.Descriptor instead. +func (*GetClusterConfigRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{43} } -func (x *ListPromotionsResponse) GetPromotions() []*v1alpha1.Promotion { +func (x *GetClusterConfigRequest) GetFormat() RawFormat { if x != nil { - return x.Promotions + return x.Format } - return nil + return RawFormat_RAW_FORMAT_UNSPECIFIED } -// WatchPromotionsRequest is the request for watching promotion changes via streaming. -type WatchPromotionsRequest struct { +type GetClusterConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose promotions should be watched. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is an optional stage name to filter promotions by. - Stage *string `protobuf:"bytes,2,opt,name=stage,proto3,oneof" json:"stage,omitempty"` + // Types that are assignable to Result: + // + // *GetClusterConfigResponse_ClusterConfig + // *GetClusterConfigResponse_Raw + Result isGetClusterConfigResponse_Result `protobuf_oneof:"result"` } -func (x *WatchPromotionsRequest) Reset() { - *x = WatchPromotionsRequest{} +func (x *GetClusterConfigResponse) Reset() { + *x = GetClusterConfigResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2609,13 +2783,13 @@ func (x *WatchPromotionsRequest) Reset() { } } -func (x *WatchPromotionsRequest) String() string { +func (x *GetClusterConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchPromotionsRequest) ProtoMessage() {} +func (*GetClusterConfigResponse) ProtoMessage() {} -func (x *WatchPromotionsRequest) ProtoReflect() protoreflect.Message { +func (x *GetClusterConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2627,39 +2801,56 @@ func (x *WatchPromotionsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchPromotionsRequest.ProtoReflect.Descriptor instead. -func (*WatchPromotionsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetClusterConfigResponse.ProtoReflect.Descriptor instead. +func (*GetClusterConfigResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{44} } -func (x *WatchPromotionsRequest) GetProject() string { - if x != nil { - return x.Project +func (m *GetClusterConfigResponse) GetResult() isGetClusterConfigResponse_Result { + if m != nil { + return m.Result } - return "" + return nil } -func (x *WatchPromotionsRequest) GetStage() string { - if x != nil && x.Stage != nil { - return *x.Stage +func (x *GetClusterConfigResponse) GetClusterConfig() *v1alpha1.ClusterConfig { + if x, ok := x.GetResult().(*GetClusterConfigResponse_ClusterConfig); ok { + return x.ClusterConfig } - return "" + return nil } -// WatchPromotionsResponse contains promotion change notifications. -type WatchPromotionsResponse struct { +func (x *GetClusterConfigResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetClusterConfigResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetClusterConfigResponse_Result interface { + isGetClusterConfigResponse_Result() +} + +type GetClusterConfigResponse_ClusterConfig struct { + ClusterConfig *v1alpha1.ClusterConfig `protobuf:"bytes,1,opt,name=cluster_config,json=clusterConfig,proto3,oneof"` +} + +type GetClusterConfigResponse_Raw struct { + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetClusterConfigResponse_ClusterConfig) isGetClusterConfigResponse_Result() {} + +func (*GetClusterConfigResponse_Raw) isGetClusterConfigResponse_Result() {} + +type DeleteClusterConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // promotion is the Promotion resource that changed. - Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3" json:"promotion,omitempty"` - // type indicates the type of change (ADDED, MODIFIED, DELETED). - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (x *WatchPromotionsResponse) Reset() { - *x = WatchPromotionsResponse{} +func (x *DeleteClusterConfigRequest) Reset() { + *x = DeleteClusterConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2667,13 +2858,13 @@ func (x *WatchPromotionsResponse) Reset() { } } -func (x *WatchPromotionsResponse) String() string { +func (x *DeleteClusterConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchPromotionsResponse) ProtoMessage() {} +func (*DeleteClusterConfigRequest) ProtoMessage() {} -func (x *WatchPromotionsResponse) ProtoReflect() protoreflect.Message { +func (x *DeleteClusterConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2685,41 +2876,19 @@ func (x *WatchPromotionsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchPromotionsResponse.ProtoReflect.Descriptor instead. -func (*WatchPromotionsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteClusterConfigRequest.ProtoReflect.Descriptor instead. +func (*DeleteClusterConfigRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{45} } -func (x *WatchPromotionsResponse) GetPromotion() *v1alpha1.Promotion { - if x != nil { - return x.Promotion - } - return nil -} - -func (x *WatchPromotionsResponse) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -// GetPromotionRequest is the request for retrieving details of a specific promotion. -type GetPromotionRequest struct { +type DeleteClusterConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // project is the name of the project containing the promotion. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the promotion to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the format for raw resource representation. - Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *GetPromotionRequest) Reset() { - *x = GetPromotionRequest{} +func (x *DeleteClusterConfigResponse) Reset() { + *x = DeleteClusterConfigResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2727,13 +2896,13 @@ func (x *GetPromotionRequest) Reset() { } } -func (x *GetPromotionRequest) String() string { +func (x *DeleteClusterConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPromotionRequest) ProtoMessage() {} +func (*DeleteClusterConfigResponse) ProtoMessage() {} -func (x *GetPromotionRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteClusterConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2745,47 +2914,19 @@ func (x *GetPromotionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPromotionRequest.ProtoReflect.Descriptor instead. -func (*GetPromotionRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteClusterConfigResponse.ProtoReflect.Descriptor instead. +func (*DeleteClusterConfigResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{46} } -func (x *GetPromotionRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *GetPromotionRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *GetPromotionRequest) GetFormat() RawFormat { - if x != nil { - return x.Format - } - return RawFormat_RAW_FORMAT_UNSPECIFIED -} - -// GetPromotionResponse contains the requested promotion information. -type GetPromotionResponse struct { +type WatchClusterConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Types that are assignable to Result: - // - // *GetPromotionResponse_Promotion - // *GetPromotionResponse_Raw - Result isGetPromotionResponse_Result `protobuf_oneof:"result"` } -func (x *GetPromotionResponse) Reset() { - *x = GetPromotionResponse{} +func (x *WatchClusterConfigRequest) Reset() { + *x = WatchClusterConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2793,13 +2934,13 @@ func (x *GetPromotionResponse) Reset() { } } -func (x *GetPromotionResponse) String() string { +func (x *WatchClusterConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPromotionResponse) ProtoMessage() {} +func (*WatchClusterConfigRequest) ProtoMessage() {} -func (x *GetPromotionResponse) ProtoReflect() protoreflect.Message { +func (x *WatchClusterConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2811,64 +2952,22 @@ func (x *GetPromotionResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPromotionResponse.ProtoReflect.Descriptor instead. -func (*GetPromotionResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchClusterConfigRequest.ProtoReflect.Descriptor instead. +func (*WatchClusterConfigRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{47} } -func (m *GetPromotionResponse) GetResult() isGetPromotionResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetPromotionResponse) GetPromotion() *v1alpha1.Promotion { - if x, ok := x.GetResult().(*GetPromotionResponse_Promotion); ok { - return x.Promotion - } - return nil -} - -func (x *GetPromotionResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetPromotionResponse_Raw); ok { - return x.Raw - } - return nil -} - -type isGetPromotionResponse_Result interface { - isGetPromotionResponse_Result() -} - -type GetPromotionResponse_Promotion struct { - // promotion contains the Promotion resource in structured format. - Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3,oneof"` -} - -type GetPromotionResponse_Raw struct { - // raw contains the Promotion resource in the requested raw format. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` -} - -func (*GetPromotionResponse_Promotion) isGetPromotionResponse_Result() {} - -func (*GetPromotionResponse_Raw) isGetPromotionResponse_Result() {} - -// WatchPromotionRequest is the request for watching a specific promotion via streaming. -type WatchPromotionRequest struct { +type WatchClusterConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the promotion. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the promotion to watch. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + ClusterConfig *v1alpha1.ClusterConfig `protobuf:"bytes,1,opt,name=cluster_config,json=clusterConfig,proto3" json:"cluster_config,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // ADDED / MODIFIED / DELETED } -func (x *WatchPromotionRequest) Reset() { - *x = WatchPromotionRequest{} +func (x *WatchClusterConfigResponse) Reset() { + *x = WatchClusterConfigResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2876,13 +2975,13 @@ func (x *WatchPromotionRequest) Reset() { } } -func (x *WatchPromotionRequest) String() string { +func (x *WatchClusterConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchPromotionRequest) ProtoMessage() {} +func (*WatchClusterConfigResponse) ProtoMessage() {} -func (x *WatchPromotionRequest) ProtoReflect() protoreflect.Message { +func (x *WatchClusterConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2894,39 +2993,39 @@ func (x *WatchPromotionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchPromotionRequest.ProtoReflect.Descriptor instead. -func (*WatchPromotionRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchClusterConfigResponse.ProtoReflect.Descriptor instead. +func (*WatchClusterConfigResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{48} } -func (x *WatchPromotionRequest) GetProject() string { +func (x *WatchClusterConfigResponse) GetClusterConfig() *v1alpha1.ClusterConfig { if x != nil { - return x.Project + return x.ClusterConfig } - return "" + return nil } -func (x *WatchPromotionRequest) GetName() string { +func (x *WatchClusterConfigResponse) GetType() string { if x != nil { - return x.Name + return x.Type } return "" } -// WatchPromotionResponse contains specific promotion change notifications. -type WatchPromotionResponse struct { +// ListPromotionsRequest is the request for retrieving all promotions, optionally filtered by stage. +type ListPromotionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // promotion is the Promotion resource that changed. - Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3" json:"promotion,omitempty"` - // type indicates the type of change (ADDED, MODIFIED, DELETED). - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + // project is the name of the project whose promotions should be listed. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // stage is an optional stage name to filter promotions by. + Stage *string `protobuf:"bytes,2,opt,name=stage,proto3,oneof" json:"stage,omitempty"` } -func (x *WatchPromotionResponse) Reset() { - *x = WatchPromotionResponse{} +func (x *ListPromotionsRequest) Reset() { + *x = ListPromotionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2934,13 +3033,13 @@ func (x *WatchPromotionResponse) Reset() { } } -func (x *WatchPromotionResponse) String() string { +func (x *ListPromotionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchPromotionResponse) ProtoMessage() {} +func (*ListPromotionsRequest) ProtoMessage() {} -func (x *WatchPromotionResponse) ProtoReflect() protoreflect.Message { +func (x *ListPromotionsRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2952,39 +3051,37 @@ func (x *WatchPromotionResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchPromotionResponse.ProtoReflect.Descriptor instead. -func (*WatchPromotionResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPromotionsRequest.ProtoReflect.Descriptor instead. +func (*ListPromotionsRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{49} } -func (x *WatchPromotionResponse) GetPromotion() *v1alpha1.Promotion { +func (x *ListPromotionsRequest) GetProject() string { if x != nil { - return x.Promotion + return x.Project } - return nil + return "" } -func (x *WatchPromotionResponse) GetType() string { - if x != nil { - return x.Type +func (x *ListPromotionsRequest) GetStage() string { + if x != nil && x.Stage != nil { + return *x.Stage } return "" } -// AbortPromotionRequest is the request for canceling a running promotion process. -type AbortPromotionRequest struct { +// ListPromotionsResponse contains a list of promotions within a project. +type ListPromotionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the promotion. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the promotion to abort. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // promotions is the list of Promotion resources found in the project. + Promotions []*v1alpha1.Promotion `protobuf:"bytes,1,rep,name=promotions,proto3" json:"promotions,omitempty"` } -func (x *AbortPromotionRequest) Reset() { - *x = AbortPromotionRequest{} +func (x *ListPromotionsResponse) Reset() { + *x = ListPromotionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2992,13 +3089,13 @@ func (x *AbortPromotionRequest) Reset() { } } -func (x *AbortPromotionRequest) String() string { +func (x *ListPromotionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AbortPromotionRequest) ProtoMessage() {} +func (*ListPromotionsResponse) ProtoMessage() {} -func (x *AbortPromotionRequest) ProtoReflect() protoreflect.Message { +func (x *ListPromotionsResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3010,34 +3107,32 @@ func (x *AbortPromotionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AbortPromotionRequest.ProtoReflect.Descriptor instead. -func (*AbortPromotionRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPromotionsResponse.ProtoReflect.Descriptor instead. +func (*ListPromotionsResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{50} } -func (x *AbortPromotionRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *AbortPromotionRequest) GetName() string { +func (x *ListPromotionsResponse) GetPromotions() []*v1alpha1.Promotion { if x != nil { - return x.Name + return x.Promotions } - return "" + return nil } -// AbortPromotionResponse is the response after aborting a promotion. -type AbortPromotionResponse struct { +// WatchPromotionsRequest is the request for watching promotion changes via streaming. +type WatchPromotionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // project is the name of the project whose promotions should be watched. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // stage is an optional stage name to filter promotions by. + Stage *string `protobuf:"bytes,2,opt,name=stage,proto3,oneof" json:"stage,omitempty"` } -func (x *AbortPromotionResponse) Reset() { - *x = AbortPromotionResponse{} +func (x *WatchPromotionsRequest) Reset() { + *x = WatchPromotionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3045,13 +3140,13 @@ func (x *AbortPromotionResponse) Reset() { } } -func (x *AbortPromotionResponse) String() string { +func (x *WatchPromotionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AbortPromotionResponse) ProtoMessage() {} +func (*WatchPromotionsRequest) ProtoMessage() {} -func (x *AbortPromotionResponse) ProtoReflect() protoreflect.Message { +func (x *WatchPromotionsRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3063,23 +3158,39 @@ func (x *AbortPromotionResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AbortPromotionResponse.ProtoReflect.Descriptor instead. -func (*AbortPromotionResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchPromotionsRequest.ProtoReflect.Descriptor instead. +func (*WatchPromotionsRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{51} } -// DeleteProjectRequest is the request for deleting a project and all associated resources. -type DeleteProjectRequest struct { +func (x *WatchPromotionsRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *WatchPromotionsRequest) GetStage() string { + if x != nil && x.Stage != nil { + return *x.Stage + } + return "" +} + +// WatchPromotionsResponse contains promotion change notifications. +type WatchPromotionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // name is the name of the project to delete. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // promotion is the Promotion resource that changed. + Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3" json:"promotion,omitempty"` + // type indicates the type of change (ADDED, MODIFIED, DELETED). + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (x *DeleteProjectRequest) Reset() { - *x = DeleteProjectRequest{} +func (x *WatchPromotionsResponse) Reset() { + *x = WatchPromotionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3087,13 +3198,13 @@ func (x *DeleteProjectRequest) Reset() { } } -func (x *DeleteProjectRequest) String() string { +func (x *WatchPromotionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteProjectRequest) ProtoMessage() {} +func (*WatchPromotionsResponse) ProtoMessage() {} -func (x *DeleteProjectRequest) ProtoReflect() protoreflect.Message { +func (x *WatchPromotionsResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3105,27 +3216,41 @@ func (x *DeleteProjectRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteProjectRequest.ProtoReflect.Descriptor instead. -func (*DeleteProjectRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchPromotionsResponse.ProtoReflect.Descriptor instead. +func (*WatchPromotionsResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{52} } -func (x *DeleteProjectRequest) GetName() string { +func (x *WatchPromotionsResponse) GetPromotion() *v1alpha1.Promotion { if x != nil { - return x.Name + return x.Promotion + } + return nil +} + +func (x *WatchPromotionsResponse) GetType() string { + if x != nil { + return x.Type } return "" } -// DeleteProjectResponse is the response after deleting a project. -type DeleteProjectResponse struct { +// GetPromotionRequest is the request for retrieving details of a specific promotion. +type GetPromotionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // project is the name of the project containing the promotion. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the promotion to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the format for raw resource representation. + Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *DeleteProjectResponse) Reset() { - *x = DeleteProjectResponse{} +func (x *GetPromotionRequest) Reset() { + *x = GetPromotionRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3133,13 +3258,13 @@ func (x *DeleteProjectResponse) Reset() { } } -func (x *DeleteProjectResponse) String() string { +func (x *GetPromotionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteProjectResponse) ProtoMessage() {} +func (*GetPromotionRequest) ProtoMessage() {} -func (x *DeleteProjectResponse) ProtoReflect() protoreflect.Message { +func (x *GetPromotionRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3151,99 +3276,62 @@ func (x *DeleteProjectResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteProjectResponse.ProtoReflect.Descriptor instead. -func (*DeleteProjectResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPromotionRequest.ProtoReflect.Descriptor instead. +func (*GetPromotionRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{53} } -// GetProjectRequest is the request for retrieving details of a specific project. -type GetProjectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // name is the name of the project to retrieve. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the format for raw resource representation. - Format RawFormat `protobuf:"varint,2,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` -} - -func (x *GetProjectRequest) Reset() { - *x = GetProjectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetProjectRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetProjectRequest) ProtoMessage() {} - -func (x *GetProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[54] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *GetPromotionRequest) GetProject() string { + if x != nil { + return x.Project } - return mi.MessageOf(x) -} - -// Deprecated: Use GetProjectRequest.ProtoReflect.Descriptor instead. -func (*GetProjectRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{54} + return "" } -func (x *GetProjectRequest) GetName() string { +func (x *GetPromotionRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *GetProjectRequest) GetFormat() RawFormat { +func (x *GetPromotionRequest) GetFormat() RawFormat { if x != nil { return x.Format } return RawFormat_RAW_FORMAT_UNSPECIFIED } -// GetProjectResponse contains the requested project information. -type GetProjectResponse struct { +// GetPromotionResponse contains the requested promotion information. +type GetPromotionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Result: // - // *GetProjectResponse_Project - // *GetProjectResponse_Raw - Result isGetProjectResponse_Result `protobuf_oneof:"result"` + // *GetPromotionResponse_Promotion + // *GetPromotionResponse_Raw + Result isGetPromotionResponse_Result `protobuf_oneof:"result"` } -func (x *GetProjectResponse) Reset() { - *x = GetProjectResponse{} +func (x *GetPromotionResponse) Reset() { + *x = GetPromotionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[55] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetProjectResponse) String() string { +func (x *GetPromotionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProjectResponse) ProtoMessage() {} +func (*GetPromotionResponse) ProtoMessage() {} -func (x *GetProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[55] +func (x *GetPromotionResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3254,86 +3342,79 @@ func (x *GetProjectResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProjectResponse.ProtoReflect.Descriptor instead. -func (*GetProjectResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{55} +// Deprecated: Use GetPromotionResponse.ProtoReflect.Descriptor instead. +func (*GetPromotionResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{54} } -func (m *GetProjectResponse) GetResult() isGetProjectResponse_Result { +func (m *GetPromotionResponse) GetResult() isGetPromotionResponse_Result { if m != nil { return m.Result } return nil } -func (x *GetProjectResponse) GetProject() *v1alpha1.Project { - if x, ok := x.GetResult().(*GetProjectResponse_Project); ok { - return x.Project +func (x *GetPromotionResponse) GetPromotion() *v1alpha1.Promotion { + if x, ok := x.GetResult().(*GetPromotionResponse_Promotion); ok { + return x.Promotion } return nil } -func (x *GetProjectResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetProjectResponse_Raw); ok { +func (x *GetPromotionResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetPromotionResponse_Raw); ok { return x.Raw } return nil } -type isGetProjectResponse_Result interface { - isGetProjectResponse_Result() +type isGetPromotionResponse_Result interface { + isGetPromotionResponse_Result() } -type GetProjectResponse_Project struct { - // project contains the Project resource in structured format. - Project *v1alpha1.Project `protobuf:"bytes,1,opt,name=project,proto3,oneof"` +type GetPromotionResponse_Promotion struct { + // promotion contains the Promotion resource in structured format. + Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3,oneof"` } -type GetProjectResponse_Raw struct { - // raw contains the Project resource in the requested raw format. +type GetPromotionResponse_Raw struct { + // raw contains the Promotion resource in the requested raw format. Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` } -func (*GetProjectResponse_Project) isGetProjectResponse_Result() {} +func (*GetPromotionResponse_Promotion) isGetPromotionResponse_Result() {} -func (*GetProjectResponse_Raw) isGetProjectResponse_Result() {} +func (*GetPromotionResponse_Raw) isGetPromotionResponse_Result() {} -// ListProjectsRequest is the request for listing all projects with optional filtering and pagination. -type ListProjectsRequest struct { +// WatchPromotionRequest is the request for watching a specific promotion via streaming. +type WatchPromotionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // page_size specifies the maximum number of projects to return per page. - PageSize *int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3,oneof" json:"page_size,omitempty"` - // page specifies which page of results to return. - Page *int32 `protobuf:"varint,2,opt,name=page,proto3,oneof" json:"page,omitempty"` - // filter specifies an optional filter expression for projects. - Filter *string `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` - // ui store starred projects uids, so it needs to filter it when looking at starred projects - Uid []string `protobuf:"bytes,4,rep,name=uid,proto3" json:"uid,omitempty"` - // When true, filter results to only projects where the authenticated user - // has been mapped to a ServiceAccount in the project's namespace. - Mine *bool `protobuf:"varint,5,opt,name=mine,proto3,oneof" json:"mine,omitempty"` + // project is the name of the project containing the promotion. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the promotion to watch. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListProjectsRequest) Reset() { - *x = ListProjectsRequest{} +func (x *WatchPromotionRequest) Reset() { + *x = WatchPromotionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[56] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListProjectsRequest) String() string { +func (x *WatchPromotionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListProjectsRequest) ProtoMessage() {} +func (*WatchPromotionRequest) ProtoMessage() {} -func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[56] +func (x *WatchPromotionRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3344,75 +3425,54 @@ func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListProjectsRequest.ProtoReflect.Descriptor instead. -func (*ListProjectsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{56} -} - -func (x *ListProjectsRequest) GetPageSize() int32 { - if x != nil && x.PageSize != nil { - return *x.PageSize - } - return 0 -} - -func (x *ListProjectsRequest) GetPage() int32 { - if x != nil && x.Page != nil { - return *x.Page - } - return 0 +// Deprecated: Use WatchPromotionRequest.ProtoReflect.Descriptor instead. +func (*WatchPromotionRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{55} } -func (x *ListProjectsRequest) GetFilter() string { - if x != nil && x.Filter != nil { - return *x.Filter +func (x *WatchPromotionRequest) GetProject() string { + if x != nil { + return x.Project } return "" } -func (x *ListProjectsRequest) GetUid() []string { +func (x *WatchPromotionRequest) GetName() string { if x != nil { - return x.Uid - } - return nil -} - -func (x *ListProjectsRequest) GetMine() bool { - if x != nil && x.Mine != nil { - return *x.Mine + return x.Name } - return false + return "" } -// ListProjectsResponse contains the list of projects and pagination information. -type ListProjectsResponse struct { +// WatchPromotionResponse contains specific promotion change notifications. +type WatchPromotionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // projects is the list of Project resources matching the request criteria. - Projects []*v1alpha1.Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` - // total is the total number of projects available (across all pages). - Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + // promotion is the Promotion resource that changed. + Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3" json:"promotion,omitempty"` + // type indicates the type of change (ADDED, MODIFIED, DELETED). + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (x *ListProjectsResponse) Reset() { - *x = ListProjectsResponse{} +func (x *WatchPromotionResponse) Reset() { + *x = WatchPromotionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[57] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListProjectsResponse) String() string { +func (x *WatchPromotionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListProjectsResponse) ProtoMessage() {} +func (*WatchPromotionResponse) ProtoMessage() {} -func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[57] +func (x *WatchPromotionResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3423,54 +3483,54 @@ func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListProjectsResponse.ProtoReflect.Descriptor instead. -func (*ListProjectsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{57} +// Deprecated: Use WatchPromotionResponse.ProtoReflect.Descriptor instead. +func (*WatchPromotionResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{56} } -func (x *ListProjectsResponse) GetProjects() []*v1alpha1.Project { +func (x *WatchPromotionResponse) GetPromotion() *v1alpha1.Promotion { if x != nil { - return x.Projects + return x.Promotion } return nil } -func (x *ListProjectsResponse) GetTotal() int32 { +func (x *WatchPromotionResponse) GetType() string { if x != nil { - return x.Total + return x.Type } - return 0 + return "" } -// GetProjectConfigRequest is the request for retrieving project-level configuration settings. -type GetProjectConfigRequest struct { +// AbortPromotionRequest is the request for canceling a running promotion process. +type AbortPromotionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project to retrieve configuration for. + // project is the name of the project containing the promotion. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // format specifies the desired response format (structured object or raw YAML). - Format RawFormat `protobuf:"varint,2,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` + // name is the name of the promotion to abort. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *GetProjectConfigRequest) Reset() { - *x = GetProjectConfigRequest{} +func (x *AbortPromotionRequest) Reset() { + *x = AbortPromotionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[58] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetProjectConfigRequest) String() string { +func (x *AbortPromotionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProjectConfigRequest) ProtoMessage() {} +func (*AbortPromotionRequest) ProtoMessage() {} -func (x *GetProjectConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[58] +func (x *AbortPromotionRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3481,55 +3541,49 @@ func (x *GetProjectConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProjectConfigRequest.ProtoReflect.Descriptor instead. -func (*GetProjectConfigRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{58} +// Deprecated: Use AbortPromotionRequest.ProtoReflect.Descriptor instead. +func (*AbortPromotionRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{57} } -func (x *GetProjectConfigRequest) GetProject() string { +func (x *AbortPromotionRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *GetProjectConfigRequest) GetFormat() RawFormat { +func (x *AbortPromotionRequest) GetName() string { if x != nil { - return x.Format + return x.Name } - return RawFormat_RAW_FORMAT_UNSPECIFIED + return "" } -// GetProjectConfigResponse contains the requested project configuration. -type GetProjectConfigResponse struct { +// AbortPromotionResponse is the response after aborting a promotion. +type AbortPromotionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Types that are assignable to Result: - // - // *GetProjectConfigResponse_ProjectConfig - // *GetProjectConfigResponse_Raw - Result isGetProjectConfigResponse_Result `protobuf_oneof:"result"` } -func (x *GetProjectConfigResponse) Reset() { - *x = GetProjectConfigResponse{} +func (x *AbortPromotionResponse) Reset() { + *x = AbortPromotionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[59] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetProjectConfigResponse) String() string { +func (x *AbortPromotionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProjectConfigResponse) ProtoMessage() {} +func (*AbortPromotionResponse) ProtoMessage() {} -func (x *GetProjectConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[59] +func (x *AbortPromotionResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3540,77 +3594,38 @@ func (x *GetProjectConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProjectConfigResponse.ProtoReflect.Descriptor instead. -func (*GetProjectConfigResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{59} -} - -func (m *GetProjectConfigResponse) GetResult() isGetProjectConfigResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetProjectConfigResponse) GetProjectConfig() *v1alpha1.ProjectConfig { - if x, ok := x.GetResult().(*GetProjectConfigResponse_ProjectConfig); ok { - return x.ProjectConfig - } - return nil -} - -func (x *GetProjectConfigResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetProjectConfigResponse_Raw); ok { - return x.Raw - } - return nil -} - -type isGetProjectConfigResponse_Result interface { - isGetProjectConfigResponse_Result() -} - -type GetProjectConfigResponse_ProjectConfig struct { - // project_config is the structured ProjectConfig object. - ProjectConfig *v1alpha1.ProjectConfig `protobuf:"bytes,1,opt,name=project_config,json=projectConfig,proto3,oneof"` -} - -type GetProjectConfigResponse_Raw struct { - // raw is the raw YAML representation of the project configuration. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +// Deprecated: Use AbortPromotionResponse.ProtoReflect.Descriptor instead. +func (*AbortPromotionResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{58} } -func (*GetProjectConfigResponse_ProjectConfig) isGetProjectConfigResponse_Result() {} - -func (*GetProjectConfigResponse_Raw) isGetProjectConfigResponse_Result() {} - -// DeleteProjectConfigRequest is the request for removing project-level configuration. -type DeleteProjectConfigRequest struct { +// DeleteProjectRequest is the request for deleting a project and all associated resources. +type DeleteProjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project to delete configuration for. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the project to delete. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DeleteProjectConfigRequest) Reset() { - *x = DeleteProjectConfigRequest{} +func (x *DeleteProjectRequest) Reset() { + *x = DeleteProjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[60] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteProjectConfigRequest) String() string { +func (x *DeleteProjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteProjectConfigRequest) ProtoMessage() {} +func (*DeleteProjectRequest) ProtoMessage() {} -func (x *DeleteProjectConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[60] +func (x *DeleteProjectRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3621,42 +3636,42 @@ func (x *DeleteProjectConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteProjectConfigRequest.ProtoReflect.Descriptor instead. -func (*DeleteProjectConfigRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{60} +// Deprecated: Use DeleteProjectRequest.ProtoReflect.Descriptor instead. +func (*DeleteProjectRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{59} } -func (x *DeleteProjectConfigRequest) GetProject() string { +func (x *DeleteProjectRequest) GetName() string { if x != nil { - return x.Project + return x.Name } return "" } -// DeleteProjectConfigResponse is the response after deleting project configuration. -type DeleteProjectConfigResponse struct { +// DeleteProjectResponse is the response after deleting a project. +type DeleteProjectResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *DeleteProjectConfigResponse) Reset() { - *x = DeleteProjectConfigResponse{} +func (x *DeleteProjectResponse) Reset() { + *x = DeleteProjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[61] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteProjectConfigResponse) String() string { +func (x *DeleteProjectResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteProjectConfigResponse) ProtoMessage() {} +func (*DeleteProjectResponse) ProtoMessage() {} -func (x *DeleteProjectConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[61] +func (x *DeleteProjectResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3667,38 +3682,40 @@ func (x *DeleteProjectConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteProjectConfigResponse.ProtoReflect.Descriptor instead. -func (*DeleteProjectConfigResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{61} +// Deprecated: Use DeleteProjectResponse.ProtoReflect.Descriptor instead. +func (*DeleteProjectResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{60} } -// WatchProjectConfigRequest is the request for streaming project configuration changes. -type WatchProjectConfigRequest struct { +// GetProjectRequest is the request for retrieving details of a specific project. +type GetProjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project to watch for configuration changes. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the project to retrieve. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the format for raw resource representation. + Format RawFormat `protobuf:"varint,2,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *WatchProjectConfigRequest) Reset() { - *x = WatchProjectConfigRequest{} +func (x *GetProjectRequest) Reset() { + *x = GetProjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[62] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchProjectConfigRequest) String() string { +func (x *GetProjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchProjectConfigRequest) ProtoMessage() {} +func (*GetProjectRequest) ProtoMessage() {} -func (x *WatchProjectConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[62] +func (x *GetProjectRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3709,47 +3726,55 @@ func (x *WatchProjectConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchProjectConfigRequest.ProtoReflect.Descriptor instead. -func (*WatchProjectConfigRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{62} +// Deprecated: Use GetProjectRequest.ProtoReflect.Descriptor instead. +func (*GetProjectRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{61} } -func (x *WatchProjectConfigRequest) GetProject() string { +func (x *GetProjectRequest) GetName() string { if x != nil { - return x.Project + return x.Name } return "" } -// WatchProjectConfigResponse provides streaming updates for project configuration changes. -type WatchProjectConfigResponse struct { +func (x *GetProjectRequest) GetFormat() RawFormat { + if x != nil { + return x.Format + } + return RawFormat_RAW_FORMAT_UNSPECIFIED +} + +// GetProjectResponse contains the requested project information. +type GetProjectResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project_config is the updated ProjectConfig object. - ProjectConfig *v1alpha1.ProjectConfig `protobuf:"bytes,1,opt,name=project_config,json=projectConfig,proto3" json:"project_config,omitempty"` - // type indicates the type of change (ADDED / MODIFIED / DELETED). - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + // Types that are assignable to Result: + // + // *GetProjectResponse_Project + // *GetProjectResponse_Raw + Result isGetProjectResponse_Result `protobuf_oneof:"result"` } -func (x *WatchProjectConfigResponse) Reset() { - *x = WatchProjectConfigResponse{} +func (x *GetProjectResponse) Reset() { + *x = GetProjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[63] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchProjectConfigResponse) String() string { +func (x *GetProjectResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchProjectConfigResponse) ProtoMessage() {} +func (*GetProjectResponse) ProtoMessage() {} -func (x *WatchProjectConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[63] +func (x *GetProjectResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3760,58 +3785,86 @@ func (x *WatchProjectConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchProjectConfigResponse.ProtoReflect.Descriptor instead. -func (*WatchProjectConfigResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{63} +// Deprecated: Use GetProjectResponse.ProtoReflect.Descriptor instead. +func (*GetProjectResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{62} } -func (x *WatchProjectConfigResponse) GetProjectConfig() *v1alpha1.ProjectConfig { - if x != nil { - return x.ProjectConfig +func (m *GetProjectResponse) GetResult() isGetProjectResponse_Result { + if m != nil { + return m.Result } return nil } -func (x *WatchProjectConfigResponse) GetType() string { - if x != nil { - return x.Type +func (x *GetProjectResponse) GetProject() *v1alpha1.Project { + if x, ok := x.GetResult().(*GetProjectResponse_Project); ok { + return x.Project } - return "" + return nil } -// ApproveFreightRequest is the request for approving freight for promotion to a stage. -type ApproveFreightRequest struct { +func (x *GetProjectResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetProjectResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetProjectResponse_Result interface { + isGetProjectResponse_Result() +} + +type GetProjectResponse_Project struct { + // project contains the Project resource in structured format. + Project *v1alpha1.Project `protobuf:"bytes,1,opt,name=project,proto3,oneof"` +} + +type GetProjectResponse_Raw struct { + // raw contains the Project resource in the requested raw format. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetProjectResponse_Project) isGetProjectResponse_Result() {} + +func (*GetProjectResponse_Raw) isGetProjectResponse_Result() {} + +// ListProjectsRequest is the request for listing all projects with optional filtering and pagination. +type ListProjectsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the freight. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the freight to approve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // alias is the alias of the freight to approve. - Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` - // stage is the name of the stage for which to approve the freight. - Stage string `protobuf:"bytes,4,opt,name=stage,proto3" json:"stage,omitempty"` + // page_size specifies the maximum number of projects to return per page. + PageSize *int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3,oneof" json:"page_size,omitempty"` + // page specifies which page of results to return. + Page *int32 `protobuf:"varint,2,opt,name=page,proto3,oneof" json:"page,omitempty"` + // filter specifies an optional filter expression for projects. + Filter *string `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` + // ui store starred projects uids, so it needs to filter it when looking at starred projects + Uid []string `protobuf:"bytes,4,rep,name=uid,proto3" json:"uid,omitempty"` + // When true, filter results to only projects where the authenticated user + // has been mapped to a ServiceAccount in the project's namespace. + Mine *bool `protobuf:"varint,5,opt,name=mine,proto3,oneof" json:"mine,omitempty"` } -func (x *ApproveFreightRequest) Reset() { - *x = ApproveFreightRequest{} +func (x *ListProjectsRequest) Reset() { + *x = ListProjectsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[64] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ApproveFreightRequest) String() string { +func (x *ListProjectsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApproveFreightRequest) ProtoMessage() {} +func (*ListProjectsRequest) ProtoMessage() {} -func (x *ApproveFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[64] +func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3822,63 +3875,75 @@ func (x *ApproveFreightRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApproveFreightRequest.ProtoReflect.Descriptor instead. -func (*ApproveFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{64} +// Deprecated: Use ListProjectsRequest.ProtoReflect.Descriptor instead. +func (*ListProjectsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{63} } -func (x *ApproveFreightRequest) GetProject() string { - if x != nil { - return x.Project +func (x *ListProjectsRequest) GetPageSize() int32 { + if x != nil && x.PageSize != nil { + return *x.PageSize } - return "" + return 0 } -func (x *ApproveFreightRequest) GetName() string { - if x != nil { - return x.Name +func (x *ListProjectsRequest) GetPage() int32 { + if x != nil && x.Page != nil { + return *x.Page } - return "" + return 0 } -func (x *ApproveFreightRequest) GetAlias() string { - if x != nil { - return x.Alias +func (x *ListProjectsRequest) GetFilter() string { + if x != nil && x.Filter != nil { + return *x.Filter } return "" } -func (x *ApproveFreightRequest) GetStage() string { +func (x *ListProjectsRequest) GetUid() []string { if x != nil { - return x.Stage + return x.Uid } - return "" + return nil } -// ApproveFreightResponse is the response after approving freight. -type ApproveFreightResponse struct { +func (x *ListProjectsRequest) GetMine() bool { + if x != nil && x.Mine != nil { + return *x.Mine + } + return false +} + +// ListProjectsResponse contains the list of projects and pagination information. +type ListProjectsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // projects is the list of Project resources matching the request criteria. + Projects []*v1alpha1.Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` + // total is the total number of projects available (across all pages). + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` } -func (x *ApproveFreightResponse) Reset() { - *x = ApproveFreightResponse{} +func (x *ListProjectsResponse) Reset() { + *x = ListProjectsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[65] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ApproveFreightResponse) String() string { +func (x *ListProjectsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApproveFreightResponse) ProtoMessage() {} +func (*ListProjectsResponse) ProtoMessage() {} -func (x *ApproveFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[65] +func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3889,42 +3954,54 @@ func (x *ApproveFreightResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApproveFreightResponse.ProtoReflect.Descriptor instead. -func (*ApproveFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{65} +// Deprecated: Use ListProjectsResponse.ProtoReflect.Descriptor instead. +func (*ListProjectsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{64} } -// DeleteFreightRequest is the request for deleting freight. -type DeleteFreightRequest struct { +func (x *ListProjectsResponse) GetProjects() []*v1alpha1.Project { + if x != nil { + return x.Projects + } + return nil +} + +func (x *ListProjectsResponse) GetTotal() int32 { + if x != nil { + return x.Total + } + return 0 +} + +// GetProjectConfigRequest is the request for retrieving project-level configuration settings. +type GetProjectConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the freight. + // project is the name of the project to retrieve configuration for. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the freight to delete. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // alias is the alias of the freight to delete. - Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` + // format specifies the desired response format (structured object or raw YAML). + Format RawFormat `protobuf:"varint,2,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *DeleteFreightRequest) Reset() { - *x = DeleteFreightRequest{} +func (x *GetProjectConfigRequest) Reset() { + *x = GetProjectConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[66] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteFreightRequest) String() string { +func (x *GetProjectConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteFreightRequest) ProtoMessage() {} +func (*GetProjectConfigRequest) ProtoMessage() {} -func (x *DeleteFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[66] +func (x *GetProjectConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3935,56 +4012,55 @@ func (x *DeleteFreightRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteFreightRequest.ProtoReflect.Descriptor instead. -func (*DeleteFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{66} +// Deprecated: Use GetProjectConfigRequest.ProtoReflect.Descriptor instead. +func (*GetProjectConfigRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{65} } -func (x *DeleteFreightRequest) GetProject() string { +func (x *GetProjectConfigRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *DeleteFreightRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *DeleteFreightRequest) GetAlias() string { +func (x *GetProjectConfigRequest) GetFormat() RawFormat { if x != nil { - return x.Alias + return x.Format } - return "" + return RawFormat_RAW_FORMAT_UNSPECIFIED } -// DeleteFreightResponse is the response after deleting freight. -type DeleteFreightResponse struct { +// GetProjectConfigResponse contains the requested project configuration. +type GetProjectConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Types that are assignable to Result: + // + // *GetProjectConfigResponse_ProjectConfig + // *GetProjectConfigResponse_Raw + Result isGetProjectConfigResponse_Result `protobuf_oneof:"result"` } -func (x *DeleteFreightResponse) Reset() { - *x = DeleteFreightResponse{} +func (x *GetProjectConfigResponse) Reset() { + *x = GetProjectConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[67] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteFreightResponse) String() string { +func (x *GetProjectConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteFreightResponse) ProtoMessage() {} +func (*GetProjectConfigResponse) ProtoMessage() {} -func (x *DeleteFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[67] +func (x *GetProjectConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3995,44 +4071,77 @@ func (x *DeleteFreightResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteFreightResponse.ProtoReflect.Descriptor instead. -func (*DeleteFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{67} +// Deprecated: Use GetProjectConfigResponse.ProtoReflect.Descriptor instead. +func (*GetProjectConfigResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{66} } -// GetFreightRequest is the request for retrieving details of specific freight. -type GetFreightRequest struct { +func (m *GetProjectConfigResponse) GetResult() isGetProjectConfigResponse_Result { + if m != nil { + return m.Result + } + return nil +} + +func (x *GetProjectConfigResponse) GetProjectConfig() *v1alpha1.ProjectConfig { + if x, ok := x.GetResult().(*GetProjectConfigResponse_ProjectConfig); ok { + return x.ProjectConfig + } + return nil +} + +func (x *GetProjectConfigResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetProjectConfigResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetProjectConfigResponse_Result interface { + isGetProjectConfigResponse_Result() +} + +type GetProjectConfigResponse_ProjectConfig struct { + // project_config is the structured ProjectConfig object. + ProjectConfig *v1alpha1.ProjectConfig `protobuf:"bytes,1,opt,name=project_config,json=projectConfig,proto3,oneof"` +} + +type GetProjectConfigResponse_Raw struct { + // raw is the raw YAML representation of the project configuration. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetProjectConfigResponse_ProjectConfig) isGetProjectConfigResponse_Result() {} + +func (*GetProjectConfigResponse_Raw) isGetProjectConfigResponse_Result() {} + +// DeleteProjectConfigRequest is the request for removing project-level configuration. +type DeleteProjectConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the freight. + // project is the name of the project to delete configuration for. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the freight to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // alias is the alias of the freight to retrieve. - Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` - // format specifies the format for raw resource representation. - Format RawFormat `protobuf:"varint,4,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *GetFreightRequest) Reset() { - *x = GetFreightRequest{} +func (x *DeleteProjectConfigRequest) Reset() { + *x = DeleteProjectConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[68] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetFreightRequest) String() string { +func (x *DeleteProjectConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetFreightRequest) ProtoMessage() {} +func (*DeleteProjectConfigRequest) ProtoMessage() {} -func (x *GetFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[68] +func (x *DeleteProjectConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4043,69 +4152,42 @@ func (x *GetFreightRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetFreightRequest.ProtoReflect.Descriptor instead. -func (*GetFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{68} +// Deprecated: Use DeleteProjectConfigRequest.ProtoReflect.Descriptor instead. +func (*DeleteProjectConfigRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{67} } -func (x *GetFreightRequest) GetProject() string { +func (x *DeleteProjectConfigRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *GetFreightRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *GetFreightRequest) GetAlias() string { - if x != nil { - return x.Alias - } - return "" -} - -func (x *GetFreightRequest) GetFormat() RawFormat { - if x != nil { - return x.Format - } - return RawFormat_RAW_FORMAT_UNSPECIFIED -} - -// GetFreightResponse contains the requested freight information. -type GetFreightResponse struct { +// DeleteProjectConfigResponse is the response after deleting project configuration. +type DeleteProjectConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Types that are assignable to Result: - // - // *GetFreightResponse_Freight - // *GetFreightResponse_Raw - Result isGetFreightResponse_Result `protobuf_oneof:"result"` } -func (x *GetFreightResponse) Reset() { - *x = GetFreightResponse{} +func (x *DeleteProjectConfigResponse) Reset() { + *x = DeleteProjectConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[69] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetFreightResponse) String() string { +func (x *DeleteProjectConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetFreightResponse) ProtoMessage() {} +func (*DeleteProjectConfigResponse) ProtoMessage() {} -func (x *GetFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[69] +func (x *DeleteProjectConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4116,77 +4198,38 @@ func (x *GetFreightResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetFreightResponse.ProtoReflect.Descriptor instead. -func (*GetFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{69} -} - -func (m *GetFreightResponse) GetResult() isGetFreightResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetFreightResponse) GetFreight() *v1alpha1.Freight { - if x, ok := x.GetResult().(*GetFreightResponse_Freight); ok { - return x.Freight - } - return nil -} - -func (x *GetFreightResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetFreightResponse_Raw); ok { - return x.Raw - } - return nil -} - -type isGetFreightResponse_Result interface { - isGetFreightResponse_Result() -} - -type GetFreightResponse_Freight struct { - // freight contains the Freight resource in structured format. - Freight *v1alpha1.Freight `protobuf:"bytes,1,opt,name=freight,proto3,oneof"` -} - -type GetFreightResponse_Raw struct { - // raw contains the Freight resource in the requested raw format. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +// Deprecated: Use DeleteProjectConfigResponse.ProtoReflect.Descriptor instead. +func (*DeleteProjectConfigResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{68} } -func (*GetFreightResponse_Freight) isGetFreightResponse_Result() {} - -func (*GetFreightResponse_Raw) isGetFreightResponse_Result() {} - -// WatchFreightRequest is the request for watching freight changes via streaming. -type WatchFreightRequest struct { +// WatchProjectConfigRequest is the request for streaming project configuration changes. +type WatchProjectConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose freight should be watched. + // project is the name of the project to watch for configuration changes. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *WatchFreightRequest) Reset() { - *x = WatchFreightRequest{} +func (x *WatchProjectConfigRequest) Reset() { + *x = WatchProjectConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[70] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchFreightRequest) String() string { +func (x *WatchProjectConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchFreightRequest) ProtoMessage() {} +func (*WatchProjectConfigRequest) ProtoMessage() {} -func (x *WatchFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[70] +func (x *WatchProjectConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4197,47 +4240,47 @@ func (x *WatchFreightRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchFreightRequest.ProtoReflect.Descriptor instead. -func (*WatchFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{70} +// Deprecated: Use WatchProjectConfigRequest.ProtoReflect.Descriptor instead. +func (*WatchProjectConfigRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{69} } -func (x *WatchFreightRequest) GetProject() string { +func (x *WatchProjectConfigRequest) GetProject() string { if x != nil { return x.Project } return "" } -// WatchFreightResponse contains freight change notifications. -type WatchFreightResponse struct { +// WatchProjectConfigResponse provides streaming updates for project configuration changes. +type WatchProjectConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // freight is the Freight resource that changed. - Freight *v1alpha1.Freight `protobuf:"bytes,1,opt,name=freight,proto3" json:"freight,omitempty"` - // type indicates the type of change (ADDED, MODIFIED, DELETED). - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // ADDED / MODIFIED / DELETED + // project_config is the updated ProjectConfig object. + ProjectConfig *v1alpha1.ProjectConfig `protobuf:"bytes,1,opt,name=project_config,json=projectConfig,proto3" json:"project_config,omitempty"` + // type indicates the type of change (ADDED / MODIFIED / DELETED). + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (x *WatchFreightResponse) Reset() { - *x = WatchFreightResponse{} +func (x *WatchProjectConfigResponse) Reset() { + *x = WatchProjectConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[71] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchFreightResponse) String() string { +func (x *WatchProjectConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchFreightResponse) ProtoMessage() {} +func (*WatchProjectConfigResponse) ProtoMessage() {} -func (x *WatchFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[71] +func (x *WatchProjectConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4248,58 +4291,58 @@ func (x *WatchFreightResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchFreightResponse.ProtoReflect.Descriptor instead. -func (*WatchFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{71} +// Deprecated: Use WatchProjectConfigResponse.ProtoReflect.Descriptor instead. +func (*WatchProjectConfigResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{70} } -func (x *WatchFreightResponse) GetFreight() *v1alpha1.Freight { +func (x *WatchProjectConfigResponse) GetProjectConfig() *v1alpha1.ProjectConfig { if x != nil { - return x.Freight + return x.ProjectConfig } return nil } -func (x *WatchFreightResponse) GetType() string { +func (x *WatchProjectConfigResponse) GetType() string { if x != nil { return x.Type } return "" } -// PromoteToStageRequest is the request for promoting freight to a specific stage. -type PromoteToStageRequest struct { +// ApproveFreightRequest is the request for approving freight for promotion to a stage. +type ApproveFreightRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the stage and freight. + // project is the name of the project containing the freight. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is the name of the stage to promote freight to. - Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` - // freight is the name of the freight to promote. - Freight string `protobuf:"bytes,3,opt,name=freight,proto3" json:"freight,omitempty"` - // freight_alias is the alias of the freight to promote. - FreightAlias string `protobuf:"bytes,4,opt,name=freight_alias,json=freightAlias,proto3" json:"freight_alias,omitempty"` + // name is the name of the freight to approve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // alias is the alias of the freight to approve. + Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` + // stage is the name of the stage for which to approve the freight. + Stage string `protobuf:"bytes,4,opt,name=stage,proto3" json:"stage,omitempty"` } -func (x *PromoteToStageRequest) Reset() { - *x = PromoteToStageRequest{} +func (x *ApproveFreightRequest) Reset() { + *x = ApproveFreightRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[72] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PromoteToStageRequest) String() string { +func (x *ApproveFreightRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PromoteToStageRequest) ProtoMessage() {} +func (*ApproveFreightRequest) ProtoMessage() {} -func (x *PromoteToStageRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[72] +func (x *ApproveFreightRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4310,66 +4353,63 @@ func (x *PromoteToStageRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PromoteToStageRequest.ProtoReflect.Descriptor instead. -func (*PromoteToStageRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{72} +// Deprecated: Use ApproveFreightRequest.ProtoReflect.Descriptor instead. +func (*ApproveFreightRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{71} } -func (x *PromoteToStageRequest) GetProject() string { +func (x *ApproveFreightRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *PromoteToStageRequest) GetStage() string { +func (x *ApproveFreightRequest) GetName() string { if x != nil { - return x.Stage + return x.Name } return "" } -func (x *PromoteToStageRequest) GetFreight() string { +func (x *ApproveFreightRequest) GetAlias() string { if x != nil { - return x.Freight + return x.Alias } return "" } -func (x *PromoteToStageRequest) GetFreightAlias() string { +func (x *ApproveFreightRequest) GetStage() string { if x != nil { - return x.FreightAlias + return x.Stage } return "" } -// PromoteToStageResponse contains the promotion created for the freight promotion. -type PromoteToStageResponse struct { +// ApproveFreightResponse is the response after approving freight. +type ApproveFreightResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // promotion is the Promotion resource created for this freight promotion. - Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3" json:"promotion,omitempty"` } -func (x *PromoteToStageResponse) Reset() { - *x = PromoteToStageResponse{} +func (x *ApproveFreightResponse) Reset() { + *x = ApproveFreightResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[73] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PromoteToStageResponse) String() string { +func (x *ApproveFreightResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PromoteToStageResponse) ProtoMessage() {} +func (*ApproveFreightResponse) ProtoMessage() {} -func (x *PromoteToStageResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[73] +func (x *ApproveFreightResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4380,51 +4420,42 @@ func (x *PromoteToStageResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PromoteToStageResponse.ProtoReflect.Descriptor instead. -func (*PromoteToStageResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{73} -} - -func (x *PromoteToStageResponse) GetPromotion() *v1alpha1.Promotion { - if x != nil { - return x.Promotion - } - return nil +// Deprecated: Use ApproveFreightResponse.ProtoReflect.Descriptor instead. +func (*ApproveFreightResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{72} } -// PromoteDownstreamRequest is the request for automatically promoting freight to downstream stages. -type PromoteDownstreamRequest struct { +// DeleteFreightRequest is the request for deleting freight. +type DeleteFreightRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the stage and freight. + // project is the name of the project containing the freight. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is the name of the source stage from which to promote downstream. - Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` - // freight is the name of the freight to promote downstream. - Freight string `protobuf:"bytes,3,opt,name=freight,proto3" json:"freight,omitempty"` - // freight_alias is the alias of the freight to promote downstream. - FreightAlias string `protobuf:"bytes,4,opt,name=freight_alias,json=freightAlias,proto3" json:"freight_alias,omitempty"` + // name is the name of the freight to delete. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // alias is the alias of the freight to delete. + Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` } -func (x *PromoteDownstreamRequest) Reset() { - *x = PromoteDownstreamRequest{} +func (x *DeleteFreightRequest) Reset() { + *x = DeleteFreightRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[74] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PromoteDownstreamRequest) String() string { +func (x *DeleteFreightRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PromoteDownstreamRequest) ProtoMessage() {} +func (*DeleteFreightRequest) ProtoMessage() {} -func (x *PromoteDownstreamRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[74] +func (x *DeleteFreightRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4435,66 +4466,56 @@ func (x *PromoteDownstreamRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PromoteDownstreamRequest.ProtoReflect.Descriptor instead. -func (*PromoteDownstreamRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{74} +// Deprecated: Use DeleteFreightRequest.ProtoReflect.Descriptor instead. +func (*DeleteFreightRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{73} } -func (x *PromoteDownstreamRequest) GetProject() string { +func (x *DeleteFreightRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *PromoteDownstreamRequest) GetStage() string { - if x != nil { - return x.Stage - } - return "" -} - -func (x *PromoteDownstreamRequest) GetFreight() string { +func (x *DeleteFreightRequest) GetName() string { if x != nil { - return x.Freight + return x.Name } return "" } -func (x *PromoteDownstreamRequest) GetFreightAlias() string { +func (x *DeleteFreightRequest) GetAlias() string { if x != nil { - return x.FreightAlias + return x.Alias } return "" } -// PromoteDownstreamResponse contains the promotions created for downstream freight promotions. -type PromoteDownstreamResponse struct { +// DeleteFreightResponse is the response after deleting freight. +type DeleteFreightResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // promotions are the Promotion resources created for downstream freight promotions. - Promotions []*v1alpha1.Promotion `protobuf:"bytes,1,rep,name=promotions,proto3" json:"promotions,omitempty"` } -func (x *PromoteDownstreamResponse) Reset() { - *x = PromoteDownstreamResponse{} +func (x *DeleteFreightResponse) Reset() { + *x = DeleteFreightResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[75] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PromoteDownstreamResponse) String() string { +func (x *DeleteFreightResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PromoteDownstreamResponse) ProtoMessage() {} +func (*DeleteFreightResponse) ProtoMessage() {} -func (x *PromoteDownstreamResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[75] +func (x *DeleteFreightResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4505,57 +4526,44 @@ func (x *PromoteDownstreamResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PromoteDownstreamResponse.ProtoReflect.Descriptor instead. -func (*PromoteDownstreamResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{75} -} - -func (x *PromoteDownstreamResponse) GetPromotions() []*v1alpha1.Promotion { - if x != nil { - return x.Promotions - } - return nil +// Deprecated: Use DeleteFreightResponse.ProtoReflect.Descriptor instead. +func (*DeleteFreightResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{74} } -// QueryFreightRequest is the request for searching freight based on specified criteria. -type QueryFreightRequest struct { +// GetFreightRequest is the request for retrieving details of specific freight. +type GetFreightRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project to search for freight. + // project is the name of the project containing the freight. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is the name of the stage to filter freight by. - Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` - // group_by specifies how to group the freight results. - GroupBy string `protobuf:"bytes,3,opt,name=group_by,json=groupBy,proto3" json:"group_by,omitempty"` - // group specifies which group to return results for. - Group string `protobuf:"bytes,4,opt,name=group,proto3" json:"group,omitempty"` - // order_by specifies how to order the freight results. - OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` - // reverse indicates whether to reverse the order of results. - Reverse bool `protobuf:"varint,6,opt,name=reverse,proto3" json:"reverse,omitempty"` - // origins filters freight by their origins (e.g., warehouse names). - Origins []string `protobuf:"bytes,7,rep,name=origins,proto3" json:"origins,omitempty"` + // name is the name of the freight to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // alias is the alias of the freight to retrieve. + Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` + // format specifies the format for raw resource representation. + Format RawFormat `protobuf:"varint,4,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *QueryFreightRequest) Reset() { - *x = QueryFreightRequest{} +func (x *GetFreightRequest) Reset() { + *x = GetFreightRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[76] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QueryFreightRequest) String() string { +func (x *GetFreightRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryFreightRequest) ProtoMessage() {} +func (*GetFreightRequest) ProtoMessage() {} -func (x *QueryFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[76] +func (x *GetFreightRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4566,72 +4574,135 @@ func (x *QueryFreightRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QueryFreightRequest.ProtoReflect.Descriptor instead. -func (*QueryFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{76} -} - -func (x *QueryFreightRequest) GetProject() string { +// Deprecated: Use GetFreightRequest.ProtoReflect.Descriptor instead. +func (*GetFreightRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{75} +} + +func (x *GetFreightRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *QueryFreightRequest) GetStage() string { +func (x *GetFreightRequest) GetName() string { if x != nil { - return x.Stage + return x.Name } return "" } -func (x *QueryFreightRequest) GetGroupBy() string { +func (x *GetFreightRequest) GetAlias() string { if x != nil { - return x.GroupBy + return x.Alias } return "" } -func (x *QueryFreightRequest) GetGroup() string { +func (x *GetFreightRequest) GetFormat() RawFormat { if x != nil { - return x.Group + return x.Format } - return "" + return RawFormat_RAW_FORMAT_UNSPECIFIED } -func (x *QueryFreightRequest) GetOrderBy() string { - if x != nil { - return x.OrderBy +// GetFreightResponse contains the requested freight information. +type GetFreightResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Result: + // + // *GetFreightResponse_Freight + // *GetFreightResponse_Raw + Result isGetFreightResponse_Result `protobuf_oneof:"result"` +} + +func (x *GetFreightResponse) Reset() { + *x = GetFreightResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *QueryFreightRequest) GetReverse() bool { - if x != nil { - return x.Reverse +func (x *GetFreightResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetFreightResponse) ProtoMessage() {} + +func (x *GetFreightResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[76] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (x *QueryFreightRequest) GetOrigins() []string { - if x != nil { - return x.Origins +// Deprecated: Use GetFreightResponse.ProtoReflect.Descriptor instead. +func (*GetFreightResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{76} +} + +func (m *GetFreightResponse) GetResult() isGetFreightResponse_Result { + if m != nil { + return m.Result } return nil } -// QueryFreightResponse contains the grouped freight search results. -type QueryFreightResponse struct { +func (x *GetFreightResponse) GetFreight() *v1alpha1.Freight { + if x, ok := x.GetResult().(*GetFreightResponse_Freight); ok { + return x.Freight + } + return nil +} + +func (x *GetFreightResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetFreightResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetFreightResponse_Result interface { + isGetFreightResponse_Result() +} + +type GetFreightResponse_Freight struct { + // freight contains the Freight resource in structured format. + Freight *v1alpha1.Freight `protobuf:"bytes,1,opt,name=freight,proto3,oneof"` +} + +type GetFreightResponse_Raw struct { + // raw contains the Freight resource in the requested raw format. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetFreightResponse_Freight) isGetFreightResponse_Result() {} + +func (*GetFreightResponse_Raw) isGetFreightResponse_Result() {} + +// WatchFreightRequest is the request for watching freight changes via streaming. +type WatchFreightRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // groups maps group names to their corresponding freight lists. - Groups map[string]*FreightList `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // project is the name of the project whose freight should be watched. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *QueryFreightResponse) Reset() { - *x = QueryFreightResponse{} +func (x *WatchFreightRequest) Reset() { + *x = WatchFreightRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4639,13 +4710,13 @@ func (x *QueryFreightResponse) Reset() { } } -func (x *QueryFreightResponse) String() string { +func (x *WatchFreightRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryFreightResponse) ProtoMessage() {} +func (*WatchFreightRequest) ProtoMessage() {} -func (x *QueryFreightResponse) ProtoReflect() protoreflect.Message { +func (x *WatchFreightRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4657,30 +4728,32 @@ func (x *QueryFreightResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QueryFreightResponse.ProtoReflect.Descriptor instead. -func (*QueryFreightResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchFreightRequest.ProtoReflect.Descriptor instead. +func (*WatchFreightRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{77} } -func (x *QueryFreightResponse) GetGroups() map[string]*FreightList { +func (x *WatchFreightRequest) GetProject() string { if x != nil { - return x.Groups + return x.Project } - return nil + return "" } -// FreightList contains a list of freight resources. -type FreightList struct { +// WatchFreightResponse contains freight change notifications. +type WatchFreightResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // freight is the list of Freight resources. - Freight []*v1alpha1.Freight `protobuf:"bytes,1,rep,name=freight,proto3" json:"freight,omitempty"` + // freight is the Freight resource that changed. + Freight *v1alpha1.Freight `protobuf:"bytes,1,opt,name=freight,proto3" json:"freight,omitempty"` + // type indicates the type of change (ADDED, MODIFIED, DELETED). + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // ADDED / MODIFIED / DELETED } -func (x *FreightList) Reset() { - *x = FreightList{} +func (x *WatchFreightResponse) Reset() { + *x = WatchFreightResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4688,13 +4761,13 @@ func (x *FreightList) Reset() { } } -func (x *FreightList) String() string { +func (x *WatchFreightResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FreightList) ProtoMessage() {} +func (*WatchFreightResponse) ProtoMessage() {} -func (x *FreightList) ProtoReflect() protoreflect.Message { +func (x *WatchFreightResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4706,36 +4779,43 @@ func (x *FreightList) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FreightList.ProtoReflect.Descriptor instead. -func (*FreightList) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchFreightResponse.ProtoReflect.Descriptor instead. +func (*WatchFreightResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{78} } -func (x *FreightList) GetFreight() []*v1alpha1.Freight { +func (x *WatchFreightResponse) GetFreight() *v1alpha1.Freight { if x != nil { return x.Freight } return nil } -// UpdateFreightAliasRequest is the request for updating a freight's alias. -type UpdateFreightAliasRequest struct { +func (x *WatchFreightResponse) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// PromoteToStageRequest is the request for promoting freight to a specific stage. +type PromoteToStageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the freight. + // project is the name of the project containing the stage and freight. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the freight whose alias should be updated. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // old_alias is the current alias of the freight. - OldAlias string `protobuf:"bytes,3,opt,name=old_alias,json=oldAlias,proto3" json:"old_alias,omitempty"` - // new_alias is the new alias to assign to the freight. - NewAlias string `protobuf:"bytes,4,opt,name=new_alias,json=newAlias,proto3" json:"new_alias,omitempty"` + // stage is the name of the stage to promote freight to. + Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` + // freight is the name of the freight to promote. + Freight string `protobuf:"bytes,3,opt,name=freight,proto3" json:"freight,omitempty"` + // freight_alias is the alias of the freight to promote. + FreightAlias string `protobuf:"bytes,4,opt,name=freight_alias,json=freightAlias,proto3" json:"freight_alias,omitempty"` } -func (x *UpdateFreightAliasRequest) Reset() { - *x = UpdateFreightAliasRequest{} +func (x *PromoteToStageRequest) Reset() { + *x = PromoteToStageRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4743,13 +4823,13 @@ func (x *UpdateFreightAliasRequest) Reset() { } } -func (x *UpdateFreightAliasRequest) String() string { +func (x *PromoteToStageRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateFreightAliasRequest) ProtoMessage() {} +func (*PromoteToStageRequest) ProtoMessage() {} -func (x *UpdateFreightAliasRequest) ProtoReflect() protoreflect.Message { +func (x *PromoteToStageRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4761,48 +4841,51 @@ func (x *UpdateFreightAliasRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateFreightAliasRequest.ProtoReflect.Descriptor instead. -func (*UpdateFreightAliasRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use PromoteToStageRequest.ProtoReflect.Descriptor instead. +func (*PromoteToStageRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{79} } -func (x *UpdateFreightAliasRequest) GetProject() string { +func (x *PromoteToStageRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *UpdateFreightAliasRequest) GetName() string { +func (x *PromoteToStageRequest) GetStage() string { if x != nil { - return x.Name + return x.Stage } return "" } -func (x *UpdateFreightAliasRequest) GetOldAlias() string { +func (x *PromoteToStageRequest) GetFreight() string { if x != nil { - return x.OldAlias + return x.Freight } return "" } -func (x *UpdateFreightAliasRequest) GetNewAlias() string { +func (x *PromoteToStageRequest) GetFreightAlias() string { if x != nil { - return x.NewAlias + return x.FreightAlias } return "" } -// UpdateFreightAliasResponse is the response after updating a freight's alias. -type UpdateFreightAliasResponse struct { +// PromoteToStageResponse contains the promotion created for the freight promotion. +type PromoteToStageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // promotion is the Promotion resource created for this freight promotion. + Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3" json:"promotion,omitempty"` } -func (x *UpdateFreightAliasResponse) Reset() { - *x = UpdateFreightAliasResponse{} +func (x *PromoteToStageResponse) Reset() { + *x = PromoteToStageResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4810,13 +4893,13 @@ func (x *UpdateFreightAliasResponse) Reset() { } } -func (x *UpdateFreightAliasResponse) String() string { +func (x *PromoteToStageResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateFreightAliasResponse) ProtoMessage() {} +func (*PromoteToStageResponse) ProtoMessage() {} -func (x *UpdateFreightAliasResponse) ProtoReflect() protoreflect.Message { +func (x *PromoteToStageResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4828,39 +4911,50 @@ func (x *UpdateFreightAliasResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateFreightAliasResponse.ProtoReflect.Descriptor instead. -func (*UpdateFreightAliasResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use PromoteToStageResponse.ProtoReflect.Descriptor instead. +func (*PromoteToStageResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{80} } -// ReverifyRequest is the request for triggering re-execution of verification processes for a stage. -type ReverifyRequest struct { +func (x *PromoteToStageResponse) GetPromotion() *v1alpha1.Promotion { + if x != nil { + return x.Promotion + } + return nil +} + +// PromoteDownstreamRequest is the request for automatically promoting freight to downstream stages. +type PromoteDownstreamRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the stage. + // project is the name of the project containing the stage and freight. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is the name of the stage to reverify. + // stage is the name of the source stage from which to promote downstream. Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` + // freight is the name of the freight to promote downstream. + Freight string `protobuf:"bytes,3,opt,name=freight,proto3" json:"freight,omitempty"` + // freight_alias is the alias of the freight to promote downstream. + FreightAlias string `protobuf:"bytes,4,opt,name=freight_alias,json=freightAlias,proto3" json:"freight_alias,omitempty"` } -func (x *ReverifyRequest) Reset() { - *x = ReverifyRequest{} - if protoimpl.UnsafeEnabled { +func (x *PromoteDownstreamRequest) Reset() { + *x = PromoteDownstreamRequest{} + if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReverifyRequest) String() string { +func (x *PromoteDownstreamRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReverifyRequest) ProtoMessage() {} +func (*PromoteDownstreamRequest) ProtoMessage() {} -func (x *ReverifyRequest) ProtoReflect() protoreflect.Message { +func (x *PromoteDownstreamRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4872,34 +4966,51 @@ func (x *ReverifyRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReverifyRequest.ProtoReflect.Descriptor instead. -func (*ReverifyRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use PromoteDownstreamRequest.ProtoReflect.Descriptor instead. +func (*PromoteDownstreamRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{81} } -func (x *ReverifyRequest) GetProject() string { +func (x *PromoteDownstreamRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *ReverifyRequest) GetStage() string { +func (x *PromoteDownstreamRequest) GetStage() string { if x != nil { return x.Stage } return "" } -// ReverifyResponse is the response after triggering reverification. -type ReverifyResponse struct { +func (x *PromoteDownstreamRequest) GetFreight() string { + if x != nil { + return x.Freight + } + return "" +} + +func (x *PromoteDownstreamRequest) GetFreightAlias() string { + if x != nil { + return x.FreightAlias + } + return "" +} + +// PromoteDownstreamResponse contains the promotions created for downstream freight promotions. +type PromoteDownstreamResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // promotions are the Promotion resources created for downstream freight promotions. + Promotions []*v1alpha1.Promotion `protobuf:"bytes,1,rep,name=promotions,proto3" json:"promotions,omitempty"` } -func (x *ReverifyResponse) Reset() { - *x = ReverifyResponse{} +func (x *PromoteDownstreamResponse) Reset() { + *x = PromoteDownstreamResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4907,13 +5018,13 @@ func (x *ReverifyResponse) Reset() { } } -func (x *ReverifyResponse) String() string { +func (x *PromoteDownstreamResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReverifyResponse) ProtoMessage() {} +func (*PromoteDownstreamResponse) ProtoMessage() {} -func (x *ReverifyResponse) ProtoReflect() protoreflect.Message { +func (x *PromoteDownstreamResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4925,25 +5036,42 @@ func (x *ReverifyResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReverifyResponse.ProtoReflect.Descriptor instead. -func (*ReverifyResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use PromoteDownstreamResponse.ProtoReflect.Descriptor instead. +func (*PromoteDownstreamResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{82} } -// AbortVerificationRequest is the request for canceling running verification processes for a stage. -type AbortVerificationRequest struct { +func (x *PromoteDownstreamResponse) GetPromotions() []*v1alpha1.Promotion { + if x != nil { + return x.Promotions + } + return nil +} + +// QueryFreightRequest is the request for searching freight based on specified criteria. +type QueryFreightRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the stage. + // project is the name of the project to search for freight. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is the name of the stage whose verification should be aborted. + // stage is the name of the stage to filter freight by. Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` + // group_by specifies how to group the freight results. + GroupBy string `protobuf:"bytes,3,opt,name=group_by,json=groupBy,proto3" json:"group_by,omitempty"` + // group specifies which group to return results for. + Group string `protobuf:"bytes,4,opt,name=group,proto3" json:"group,omitempty"` + // order_by specifies how to order the freight results. + OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + // reverse indicates whether to reverse the order of results. + Reverse bool `protobuf:"varint,6,opt,name=reverse,proto3" json:"reverse,omitempty"` + // origins filters freight by their origins (e.g., warehouse names). + Origins []string `protobuf:"bytes,7,rep,name=origins,proto3" json:"origins,omitempty"` } -func (x *AbortVerificationRequest) Reset() { - *x = AbortVerificationRequest{} +func (x *QueryFreightRequest) Reset() { + *x = QueryFreightRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4951,13 +5079,13 @@ func (x *AbortVerificationRequest) Reset() { } } -func (x *AbortVerificationRequest) String() string { +func (x *QueryFreightRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AbortVerificationRequest) ProtoMessage() {} +func (*QueryFreightRequest) ProtoMessage() {} -func (x *AbortVerificationRequest) ProtoReflect() protoreflect.Message { +func (x *QueryFreightRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4969,91 +5097,87 @@ func (x *AbortVerificationRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AbortVerificationRequest.ProtoReflect.Descriptor instead. -func (*AbortVerificationRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use QueryFreightRequest.ProtoReflect.Descriptor instead. +func (*QueryFreightRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{83} } -func (x *AbortVerificationRequest) GetProject() string { +func (x *QueryFreightRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *AbortVerificationRequest) GetStage() string { +func (x *QueryFreightRequest) GetStage() string { if x != nil { return x.Stage } return "" } -// AbortVerificationResponse is the response after aborting verification. -type AbortVerificationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *QueryFreightRequest) GetGroupBy() string { + if x != nil { + return x.GroupBy + } + return "" } -func (x *AbortVerificationResponse) Reset() { - *x = AbortVerificationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[84] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *QueryFreightRequest) GetGroup() string { + if x != nil { + return x.Group } + return "" } -func (x *AbortVerificationResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *QueryFreightRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" } -func (*AbortVerificationResponse) ProtoMessage() {} - -func (x *AbortVerificationResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[84] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *QueryFreightRequest) GetReverse() bool { + if x != nil { + return x.Reverse } - return mi.MessageOf(x) + return false } -// Deprecated: Use AbortVerificationResponse.ProtoReflect.Descriptor instead. -func (*AbortVerificationResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{84} +func (x *QueryFreightRequest) GetOrigins() []string { + if x != nil { + return x.Origins + } + return nil } -// ListWarehousesRequest is the request for listing warehouses within a project. -type ListWarehousesRequest struct { +// QueryFreightResponse contains the grouped freight search results. +type QueryFreightResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose warehouses should be listed. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // groups maps group names to their corresponding freight lists. + Groups map[string]*FreightList `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *ListWarehousesRequest) Reset() { - *x = ListWarehousesRequest{} +func (x *QueryFreightResponse) Reset() { + *x = QueryFreightResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[85] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListWarehousesRequest) String() string { +func (x *QueryFreightResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListWarehousesRequest) ProtoMessage() {} +func (*QueryFreightResponse) ProtoMessage() {} -func (x *ListWarehousesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[85] +func (x *QueryFreightResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5064,45 +5188,45 @@ func (x *ListWarehousesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListWarehousesRequest.ProtoReflect.Descriptor instead. -func (*ListWarehousesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{85} +// Deprecated: Use QueryFreightResponse.ProtoReflect.Descriptor instead. +func (*QueryFreightResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{84} } -func (x *ListWarehousesRequest) GetProject() string { +func (x *QueryFreightResponse) GetGroups() map[string]*FreightList { if x != nil { - return x.Project + return x.Groups } - return "" + return nil } -// ListWarehousesResponse contains a list of warehouses within a project. -type ListWarehousesResponse struct { +// FreightList contains a list of freight resources. +type FreightList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // warehouses is the list of Warehouse resources found in the project. - Warehouses []*v1alpha1.Warehouse `protobuf:"bytes,1,rep,name=warehouses,proto3" json:"warehouses,omitempty"` + // freight is the list of Freight resources. + Freight []*v1alpha1.Freight `protobuf:"bytes,1,rep,name=freight,proto3" json:"freight,omitempty"` } -func (x *ListWarehousesResponse) Reset() { - *x = ListWarehousesResponse{} +func (x *FreightList) Reset() { + *x = FreightList{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[86] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListWarehousesResponse) String() string { +func (x *FreightList) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListWarehousesResponse) ProtoMessage() {} +func (*FreightList) ProtoMessage() {} -func (x *ListWarehousesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[86] +func (x *FreightList) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5113,49 +5237,51 @@ func (x *ListWarehousesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListWarehousesResponse.ProtoReflect.Descriptor instead. -func (*ListWarehousesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{86} +// Deprecated: Use FreightList.ProtoReflect.Descriptor instead. +func (*FreightList) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{85} } -func (x *ListWarehousesResponse) GetWarehouses() []*v1alpha1.Warehouse { +func (x *FreightList) GetFreight() []*v1alpha1.Freight { if x != nil { - return x.Warehouses + return x.Freight } return nil } -// GetWarehouseRequest is the request for retrieving details of a specific warehouse. -type GetWarehouseRequest struct { +// UpdateFreightAliasRequest is the request for updating a freight's alias. +type UpdateFreightAliasRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the warehouse. + // project is the name of the project containing the freight. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the warehouse to retrieve. + // name is the name of the freight whose alias should be updated. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the format for raw resource representation. - Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` + // old_alias is the current alias of the freight. + OldAlias string `protobuf:"bytes,3,opt,name=old_alias,json=oldAlias,proto3" json:"old_alias,omitempty"` + // new_alias is the new alias to assign to the freight. + NewAlias string `protobuf:"bytes,4,opt,name=new_alias,json=newAlias,proto3" json:"new_alias,omitempty"` } -func (x *GetWarehouseRequest) Reset() { - *x = GetWarehouseRequest{} +func (x *UpdateFreightAliasRequest) Reset() { + *x = UpdateFreightAliasRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[87] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetWarehouseRequest) String() string { +func (x *UpdateFreightAliasRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetWarehouseRequest) ProtoMessage() {} +func (*UpdateFreightAliasRequest) ProtoMessage() {} -func (x *GetWarehouseRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[87] +func (x *UpdateFreightAliasRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5166,62 +5292,63 @@ func (x *GetWarehouseRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetWarehouseRequest.ProtoReflect.Descriptor instead. -func (*GetWarehouseRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{87} +// Deprecated: Use UpdateFreightAliasRequest.ProtoReflect.Descriptor instead. +func (*UpdateFreightAliasRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{86} } -func (x *GetWarehouseRequest) GetProject() string { +func (x *UpdateFreightAliasRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *GetWarehouseRequest) GetName() string { +func (x *UpdateFreightAliasRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *GetWarehouseRequest) GetFormat() RawFormat { +func (x *UpdateFreightAliasRequest) GetOldAlias() string { if x != nil { - return x.Format + return x.OldAlias } - return RawFormat_RAW_FORMAT_UNSPECIFIED + return "" } -// GetWarehouseResponse contains the requested warehouse information. -type GetWarehouseResponse struct { +func (x *UpdateFreightAliasRequest) GetNewAlias() string { + if x != nil { + return x.NewAlias + } + return "" +} + +// UpdateFreightAliasResponse is the response after updating a freight's alias. +type UpdateFreightAliasResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Types that are assignable to Result: - // - // *GetWarehouseResponse_Warehouse - // *GetWarehouseResponse_Raw - Result isGetWarehouseResponse_Result `protobuf_oneof:"result"` } -func (x *GetWarehouseResponse) Reset() { - *x = GetWarehouseResponse{} +func (x *UpdateFreightAliasResponse) Reset() { + *x = UpdateFreightAliasResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[88] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetWarehouseResponse) String() string { +func (x *UpdateFreightAliasResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetWarehouseResponse) ProtoMessage() {} +func (*UpdateFreightAliasResponse) ProtoMessage() {} -func (x *GetWarehouseResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[88] +func (x *UpdateFreightAliasResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5232,79 +5359,40 @@ func (x *GetWarehouseResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetWarehouseResponse.ProtoReflect.Descriptor instead. -func (*GetWarehouseResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{88} -} - -func (m *GetWarehouseResponse) GetResult() isGetWarehouseResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetWarehouseResponse) GetWarehouse() *v1alpha1.Warehouse { - if x, ok := x.GetResult().(*GetWarehouseResponse_Warehouse); ok { - return x.Warehouse - } - return nil -} - -func (x *GetWarehouseResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetWarehouseResponse_Raw); ok { - return x.Raw - } - return nil -} - -type isGetWarehouseResponse_Result interface { - isGetWarehouseResponse_Result() -} - -type GetWarehouseResponse_Warehouse struct { - // warehouse contains the Warehouse resource in structured format. - Warehouse *v1alpha1.Warehouse `protobuf:"bytes,1,opt,name=warehouse,proto3,oneof"` -} - -type GetWarehouseResponse_Raw struct { - // raw contains the Warehouse resource in the requested raw format. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +// Deprecated: Use UpdateFreightAliasResponse.ProtoReflect.Descriptor instead. +func (*UpdateFreightAliasResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{87} } -func (*GetWarehouseResponse_Warehouse) isGetWarehouseResponse_Result() {} - -func (*GetWarehouseResponse_Raw) isGetWarehouseResponse_Result() {} - -// WatchWarehousesRequest is the request for watching warehouse changes via streaming. -type WatchWarehousesRequest struct { +// ReverifyRequest is the request for triggering re-execution of verification processes for a stage. +type ReverifyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose warehouses should be watched. + // project is the name of the project containing the stage. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of a specific warehouse to watch, if empty all warehouses in the project are watched. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // stage is the name of the stage to reverify. + Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` } -func (x *WatchWarehousesRequest) Reset() { - *x = WatchWarehousesRequest{} +func (x *ReverifyRequest) Reset() { + *x = ReverifyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[89] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchWarehousesRequest) String() string { +func (x *ReverifyRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchWarehousesRequest) ProtoMessage() {} +func (*ReverifyRequest) ProtoMessage() {} -func (x *WatchWarehousesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[89] +func (x *ReverifyRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5315,54 +5403,49 @@ func (x *WatchWarehousesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchWarehousesRequest.ProtoReflect.Descriptor instead. -func (*WatchWarehousesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{89} +// Deprecated: Use ReverifyRequest.ProtoReflect.Descriptor instead. +func (*ReverifyRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{88} } -func (x *WatchWarehousesRequest) GetProject() string { +func (x *ReverifyRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *WatchWarehousesRequest) GetName() string { +func (x *ReverifyRequest) GetStage() string { if x != nil { - return x.Name + return x.Stage } return "" } -// WatchWarehousesResponse contains warehouse change notifications. -type WatchWarehousesResponse struct { +// ReverifyResponse is the response after triggering reverification. +type ReverifyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // warehouse is the Warehouse resource that changed. - Warehouse *v1alpha1.Warehouse `protobuf:"bytes,1,opt,name=warehouse,proto3" json:"warehouse,omitempty"` - // type indicates the type of change (ADDED, MODIFIED, DELETED). - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (x *WatchWarehousesResponse) Reset() { - *x = WatchWarehousesResponse{} +func (x *ReverifyResponse) Reset() { + *x = ReverifyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[90] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchWarehousesResponse) String() string { +func (x *ReverifyResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchWarehousesResponse) ProtoMessage() {} +func (*ReverifyResponse) ProtoMessage() {} -func (x *WatchWarehousesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[90] +func (x *ReverifyResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5373,54 +5456,40 @@ func (x *WatchWarehousesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchWarehousesResponse.ProtoReflect.Descriptor instead. -func (*WatchWarehousesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{90} -} - -func (x *WatchWarehousesResponse) GetWarehouse() *v1alpha1.Warehouse { - if x != nil { - return x.Warehouse - } - return nil -} - -func (x *WatchWarehousesResponse) GetType() string { - if x != nil { - return x.Type - } - return "" +// Deprecated: Use ReverifyResponse.ProtoReflect.Descriptor instead. +func (*ReverifyResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{89} } -// DeleteWarehouseRequest is the request for deleting a warehouse. -type DeleteWarehouseRequest struct { +// AbortVerificationRequest is the request for canceling running verification processes for a stage. +type AbortVerificationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the warehouse. + // project is the name of the project containing the stage. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the warehouse to delete. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // stage is the name of the stage whose verification should be aborted. + Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` } -func (x *DeleteWarehouseRequest) Reset() { - *x = DeleteWarehouseRequest{} +func (x *AbortVerificationRequest) Reset() { + *x = AbortVerificationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[91] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteWarehouseRequest) String() string { +func (x *AbortVerificationRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteWarehouseRequest) ProtoMessage() {} +func (*AbortVerificationRequest) ProtoMessage() {} -func (x *DeleteWarehouseRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[91] +func (x *AbortVerificationRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5431,49 +5500,49 @@ func (x *DeleteWarehouseRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteWarehouseRequest.ProtoReflect.Descriptor instead. -func (*DeleteWarehouseRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{91} +// Deprecated: Use AbortVerificationRequest.ProtoReflect.Descriptor instead. +func (*AbortVerificationRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{90} } -func (x *DeleteWarehouseRequest) GetProject() string { +func (x *AbortVerificationRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *DeleteWarehouseRequest) GetName() string { +func (x *AbortVerificationRequest) GetStage() string { if x != nil { - return x.Name + return x.Stage } return "" } -// DeleteWarehouseResponse is the response after deleting a warehouse. -type DeleteWarehouseResponse struct { +// AbortVerificationResponse is the response after aborting verification. +type AbortVerificationResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *DeleteWarehouseResponse) Reset() { - *x = DeleteWarehouseResponse{} +func (x *AbortVerificationResponse) Reset() { + *x = AbortVerificationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[92] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteWarehouseResponse) String() string { +func (x *AbortVerificationResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteWarehouseResponse) ProtoMessage() {} +func (*AbortVerificationResponse) ProtoMessage() {} -func (x *DeleteWarehouseResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[92] +func (x *AbortVerificationResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5484,53 +5553,38 @@ func (x *DeleteWarehouseResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteWarehouseResponse.ProtoReflect.Descriptor instead. -func (*DeleteWarehouseResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{92} +// Deprecated: Use AbortVerificationResponse.ProtoReflect.Descriptor instead. +func (*AbortVerificationResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{91} } -// CreateConfigMapRequest is the request for creating a project-level, -// system-level, or shared ConfigMap. -type CreateConfigMapRequest struct { +// ListWarehousesRequest is the request for listing warehouses within a project. +type ListWarehousesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to create a system-level - // ConfigMap instead of a project-level or shared one. - SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project where the ConfigMap will be created. If - // empty and system_level is false, creates the ConfigMap in the shared - // resources namespace. This value is ignored if system_level is true. - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the ConfigMap to create. - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - // description is a human-readable description of the ConfigMap. - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - // data contains the key-value pairs that make up the ConfigMap. - Data map[string]string `protobuf:"bytes,5,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // replicate, when true, replicates this ConfigMap to all Project namespaces - // by setting the kargo.akuity.io/replicate-to: "*" annotation. - Replicate bool `protobuf:"varint,6,opt,name=replicate,proto3" json:"replicate,omitempty"` + // project is the name of the project whose warehouses should be listed. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *CreateConfigMapRequest) Reset() { - *x = CreateConfigMapRequest{} +func (x *ListWarehousesRequest) Reset() { + *x = ListWarehousesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[93] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateConfigMapRequest) String() string { +func (x *ListWarehousesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateConfigMapRequest) ProtoMessage() {} +func (*ListWarehousesRequest) ProtoMessage() {} -func (x *CreateConfigMapRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[93] +func (x *ListWarehousesRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5541,81 +5595,45 @@ func (x *CreateConfigMapRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateConfigMapRequest.ProtoReflect.Descriptor instead. -func (*CreateConfigMapRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{93} -} - -func (x *CreateConfigMapRequest) GetSystemLevel() bool { - if x != nil { - return x.SystemLevel - } - return false +// Deprecated: Use ListWarehousesRequest.ProtoReflect.Descriptor instead. +func (*ListWarehousesRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{92} } -func (x *CreateConfigMapRequest) GetProject() string { +func (x *ListWarehousesRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *CreateConfigMapRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *CreateConfigMapRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *CreateConfigMapRequest) GetData() map[string]string { - if x != nil { - return x.Data - } - return nil -} - -func (x *CreateConfigMapRequest) GetReplicate() bool { - if x != nil { - return x.Replicate - } - return false -} - -// CreateConfigMapResponse is the response containing the ConfigMap that was -// created. -type CreateConfigMapResponse struct { +// ListWarehousesResponse contains a list of warehouses within a project. +type ListWarehousesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // config_map is the ConfigMap that was created. - ConfigMap *v1.ConfigMap `protobuf:"bytes,1,opt,name=config_map,json=configMap,proto3" json:"config_map,omitempty"` + // warehouses is the list of Warehouse resources found in the project. + Warehouses []*v1alpha1.Warehouse `protobuf:"bytes,1,rep,name=warehouses,proto3" json:"warehouses,omitempty"` } -func (x *CreateConfigMapResponse) Reset() { - *x = CreateConfigMapResponse{} +func (x *ListWarehousesResponse) Reset() { + *x = ListWarehousesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[94] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateConfigMapResponse) String() string { +func (x *ListWarehousesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateConfigMapResponse) ProtoMessage() {} +func (*ListWarehousesResponse) ProtoMessage() {} -func (x *CreateConfigMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[94] +func (x *ListWarehousesResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5626,53 +5644,49 @@ func (x *CreateConfigMapResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateConfigMapResponse.ProtoReflect.Descriptor instead. -func (*CreateConfigMapResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{94} +// Deprecated: Use ListWarehousesResponse.ProtoReflect.Descriptor instead. +func (*ListWarehousesResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{93} } -func (x *CreateConfigMapResponse) GetConfigMap() *v1.ConfigMap { +func (x *ListWarehousesResponse) GetWarehouses() []*v1alpha1.Warehouse { if x != nil { - return x.ConfigMap + return x.Warehouses } return nil } -// DeleteConfigMapRequest is the request for deleting a project-level, -// system-level, or shared ConfigMap. -type DeleteConfigMapRequest struct { +// GetWarehouseRequest is the request for retrieving details of a specific warehouse. +type GetWarehouseRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to delete a - // system-level ConfigMap instead of a project-level or shared one. - SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project in which to delete a ConfigMap. If empty - // and system_level is false, deletes a shared ConfigMap. This value is - // ignored if system_level is true. - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the ConfigMap to delete. - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // project is the name of the project containing the warehouse. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the warehouse to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the format for raw resource representation. + Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *DeleteConfigMapRequest) Reset() { - *x = DeleteConfigMapRequest{} +func (x *GetWarehouseRequest) Reset() { + *x = GetWarehouseRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[95] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteConfigMapRequest) String() string { +func (x *GetWarehouseRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteConfigMapRequest) ProtoMessage() {} +func (*GetWarehouseRequest) ProtoMessage() {} -func (x *DeleteConfigMapRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[95] +func (x *GetWarehouseRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5683,56 +5697,62 @@ func (x *DeleteConfigMapRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteConfigMapRequest.ProtoReflect.Descriptor instead. -func (*DeleteConfigMapRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{95} +// Deprecated: Use GetWarehouseRequest.ProtoReflect.Descriptor instead. +func (*GetWarehouseRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{94} } -func (x *DeleteConfigMapRequest) GetSystemLevel() bool { +func (x *GetWarehouseRequest) GetProject() string { if x != nil { - return x.SystemLevel + return x.Project } - return false + return "" } -func (x *DeleteConfigMapRequest) GetProject() string { +func (x *GetWarehouseRequest) GetName() string { if x != nil { - return x.Project + return x.Name } return "" } -func (x *DeleteConfigMapRequest) GetName() string { +func (x *GetWarehouseRequest) GetFormat() RawFormat { if x != nil { - return x.Name + return x.Format } - return "" + return RawFormat_RAW_FORMAT_UNSPECIFIED } -// DeleteConfigMapResponse is the response returned after deleting a ConfigMap. -type DeleteConfigMapResponse struct { +// GetWarehouseResponse contains the requested warehouse information. +type GetWarehouseResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Types that are assignable to Result: + // + // *GetWarehouseResponse_Warehouse + // *GetWarehouseResponse_Raw + Result isGetWarehouseResponse_Result `protobuf_oneof:"result"` } -func (x *DeleteConfigMapResponse) Reset() { - *x = DeleteConfigMapResponse{} +func (x *GetWarehouseResponse) Reset() { + *x = GetWarehouseResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[96] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteConfigMapResponse) String() string { +func (x *GetWarehouseResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteConfigMapResponse) ProtoMessage() {} +func (*GetWarehouseResponse) ProtoMessage() {} -func (x *DeleteConfigMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[96] +func (x *GetWarehouseResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5743,44 +5763,79 @@ func (x *DeleteConfigMapResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteConfigMapResponse.ProtoReflect.Descriptor instead. -func (*DeleteConfigMapResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{96} +// Deprecated: Use GetWarehouseResponse.ProtoReflect.Descriptor instead. +func (*GetWarehouseResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{95} } -// ListConfigMapsRequest is the request for listing all project-level, -// system-level, or shared ConfigMaps. -type ListConfigMapsRequest struct { +func (m *GetWarehouseResponse) GetResult() isGetWarehouseResponse_Result { + if m != nil { + return m.Result + } + return nil +} + +func (x *GetWarehouseResponse) GetWarehouse() *v1alpha1.Warehouse { + if x, ok := x.GetResult().(*GetWarehouseResponse_Warehouse); ok { + return x.Warehouse + } + return nil +} + +func (x *GetWarehouseResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetWarehouseResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetWarehouseResponse_Result interface { + isGetWarehouseResponse_Result() +} + +type GetWarehouseResponse_Warehouse struct { + // warehouse contains the Warehouse resource in structured format. + Warehouse *v1alpha1.Warehouse `protobuf:"bytes,1,opt,name=warehouse,proto3,oneof"` +} + +type GetWarehouseResponse_Raw struct { + // raw contains the Warehouse resource in the requested raw format. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetWarehouseResponse_Warehouse) isGetWarehouseResponse_Result() {} + +func (*GetWarehouseResponse_Raw) isGetWarehouseResponse_Result() {} + +// WatchWarehousesRequest is the request for watching warehouse changes via streaming. +type WatchWarehousesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to list system-level - // ConfigMaps instead of project-level or shared ones. - SystemLevel bool `protobuf:"varint,2,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project in which to list ConfigMaps. If empty - // and system_level is false, lists shared ConfigMaps. This value is ignored - // if system_level is true. + // project is the name of the project whose warehouses should be watched. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of a specific warehouse to watch, if empty all warehouses in the project are watched. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListConfigMapsRequest) Reset() { - *x = ListConfigMapsRequest{} +func (x *WatchWarehousesRequest) Reset() { + *x = WatchWarehousesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[97] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListConfigMapsRequest) String() string { +func (x *WatchWarehousesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListConfigMapsRequest) ProtoMessage() {} +func (*WatchWarehousesRequest) ProtoMessage() {} -func (x *ListConfigMapsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[97] +func (x *WatchWarehousesRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5791,52 +5846,54 @@ func (x *ListConfigMapsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListConfigMapsRequest.ProtoReflect.Descriptor instead. -func (*ListConfigMapsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{97} +// Deprecated: Use WatchWarehousesRequest.ProtoReflect.Descriptor instead. +func (*WatchWarehousesRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{96} } -func (x *ListConfigMapsRequest) GetSystemLevel() bool { +func (x *WatchWarehousesRequest) GetProject() string { if x != nil { - return x.SystemLevel + return x.Project } - return false + return "" } -func (x *ListConfigMapsRequest) GetProject() string { +func (x *WatchWarehousesRequest) GetName() string { if x != nil { - return x.Project + return x.Name } return "" } -// ListConfigMapsResponse contains the list of ConfigMaps. -type ListConfigMapsResponse struct { +// WatchWarehousesResponse contains warehouse change notifications. +type WatchWarehousesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // config_maps is the list of ConfigMaps. - ConfigMaps []*v1.ConfigMap `protobuf:"bytes,1,rep,name=config_maps,json=configMaps,proto3" json:"config_maps,omitempty"` + // warehouse is the Warehouse resource that changed. + Warehouse *v1alpha1.Warehouse `protobuf:"bytes,1,opt,name=warehouse,proto3" json:"warehouse,omitempty"` + // type indicates the type of change (ADDED, MODIFIED, DELETED). + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (x *ListConfigMapsResponse) Reset() { - *x = ListConfigMapsResponse{} +func (x *WatchWarehousesResponse) Reset() { + *x = WatchWarehousesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[98] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListConfigMapsResponse) String() string { +func (x *WatchWarehousesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListConfigMapsResponse) ProtoMessage() {} +func (*WatchWarehousesResponse) ProtoMessage() {} -func (x *ListConfigMapsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[98] +func (x *WatchWarehousesResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5847,56 +5904,54 @@ func (x *ListConfigMapsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListConfigMapsResponse.ProtoReflect.Descriptor instead. -func (*ListConfigMapsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{98} +// Deprecated: Use WatchWarehousesResponse.ProtoReflect.Descriptor instead. +func (*WatchWarehousesResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{97} } -func (x *ListConfigMapsResponse) GetConfigMaps() []*v1.ConfigMap { +func (x *WatchWarehousesResponse) GetWarehouse() *v1alpha1.Warehouse { if x != nil { - return x.ConfigMaps + return x.Warehouse } return nil } -// GetConfigMapRequest is the request for getting a specific project-level, -// system-level, or shared ConfigMap. -type GetConfigMapRequest struct { +func (x *WatchWarehousesResponse) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// DeleteWarehouseRequest is the request for deleting a warehouse. +type DeleteWarehouseRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to get a system-level - // ConfigMap instead of a project-level or shared one. - SystemLevel bool `protobuf:"varint,4,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project in which to get the ConfigMap. If empty - // and system_level is false, gets a shared ConfigMap. This value is ignored - // if system_level is true. + // project is the name of the project containing the warehouse. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the ConfigMap to retrieve. + // name is the name of the warehouse to delete. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the desired response format (structured object or raw - // YAML). - Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *GetConfigMapRequest) Reset() { - *x = GetConfigMapRequest{} +func (x *DeleteWarehouseRequest) Reset() { + *x = DeleteWarehouseRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[99] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetConfigMapRequest) String() string { +func (x *DeleteWarehouseRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetConfigMapRequest) ProtoMessage() {} +func (*DeleteWarehouseRequest) ProtoMessage() {} -func (x *GetConfigMapRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[99] +func (x *DeleteWarehouseRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5907,69 +5962,49 @@ func (x *GetConfigMapRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetConfigMapRequest.ProtoReflect.Descriptor instead. -func (*GetConfigMapRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{99} -} - -func (x *GetConfigMapRequest) GetSystemLevel() bool { - if x != nil { - return x.SystemLevel - } - return false +// Deprecated: Use DeleteWarehouseRequest.ProtoReflect.Descriptor instead. +func (*DeleteWarehouseRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{98} } -func (x *GetConfigMapRequest) GetProject() string { +func (x *DeleteWarehouseRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *GetConfigMapRequest) GetName() string { +func (x *DeleteWarehouseRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *GetConfigMapRequest) GetFormat() RawFormat { - if x != nil { - return x.Format - } - return RawFormat_RAW_FORMAT_UNSPECIFIED -} - -// GetConfigMapResponse contains the requested ConfigMap. -type GetConfigMapResponse struct { +// DeleteWarehouseResponse is the response after deleting a warehouse. +type DeleteWarehouseResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Types that are assignable to Result: - // - // *GetConfigMapResponse_ConfigMap - // *GetConfigMapResponse_Raw - Result isGetConfigMapResponse_Result `protobuf_oneof:"result"` } -func (x *GetConfigMapResponse) Reset() { - *x = GetConfigMapResponse{} +func (x *DeleteWarehouseResponse) Reset() { + *x = DeleteWarehouseResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[100] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetConfigMapResponse) String() string { +func (x *DeleteWarehouseResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetConfigMapResponse) ProtoMessage() {} +func (*DeleteWarehouseResponse) ProtoMessage() {} -func (x *GetConfigMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[100] +func (x *DeleteWarehouseResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5980,65 +6015,26 @@ func (x *GetConfigMapResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetConfigMapResponse.ProtoReflect.Descriptor instead. -func (*GetConfigMapResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{100} -} - -func (m *GetConfigMapResponse) GetResult() isGetConfigMapResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetConfigMapResponse) GetConfigMap() *v1.ConfigMap { - if x, ok := x.GetResult().(*GetConfigMapResponse_ConfigMap); ok { - return x.ConfigMap - } - return nil -} - -func (x *GetConfigMapResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetConfigMapResponse_Raw); ok { - return x.Raw - } - return nil -} - -type isGetConfigMapResponse_Result interface { - isGetConfigMapResponse_Result() -} - -type GetConfigMapResponse_ConfigMap struct { - // config_map is the structured Kubernetes ConfigMap object. - ConfigMap *v1.ConfigMap `protobuf:"bytes,1,opt,name=config_map,json=configMap,proto3,oneof"` -} - -type GetConfigMapResponse_Raw struct { - // raw is the raw YAML representation of the ConfigMap. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +// Deprecated: Use DeleteWarehouseResponse.ProtoReflect.Descriptor instead. +func (*DeleteWarehouseResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{99} } -func (*GetConfigMapResponse_ConfigMap) isGetConfigMapResponse_Result() {} - -func (*GetConfigMapResponse_Raw) isGetConfigMapResponse_Result() {} - -// UpdateConfigMapRequest is the request for updating a project-level, +// CreateConfigMapRequest is the request for creating a project-level, // system-level, or shared ConfigMap. -type UpdateConfigMapRequest struct { +type CreateConfigMapRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to update a system-level + // system_level indicates whether the request is to create a system-level // ConfigMap instead of a project-level or shared one. SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project containing the ConfigMap to be updated. - // If empty and system_level is false, updates the ConfigMap in the shared + // project is the name of the project where the ConfigMap will be created. If + // empty and system_level is false, creates the ConfigMap in the shared // resources namespace. This value is ignored if system_level is true. Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the ConfigMap to be updated. + // name is the name of the ConfigMap to create. Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` // description is a human-readable description of the ConfigMap. Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` @@ -6049,23 +6045,23 @@ type UpdateConfigMapRequest struct { Replicate bool `protobuf:"varint,6,opt,name=replicate,proto3" json:"replicate,omitempty"` } -func (x *UpdateConfigMapRequest) Reset() { - *x = UpdateConfigMapRequest{} +func (x *CreateConfigMapRequest) Reset() { + *x = CreateConfigMapRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[101] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateConfigMapRequest) String() string { +func (x *CreateConfigMapRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateConfigMapRequest) ProtoMessage() {} +func (*CreateConfigMapRequest) ProtoMessage() {} -func (x *UpdateConfigMapRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[101] +func (x *CreateConfigMapRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6076,80 +6072,81 @@ func (x *UpdateConfigMapRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateConfigMapRequest.ProtoReflect.Descriptor instead. -func (*UpdateConfigMapRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{101} +// Deprecated: Use CreateConfigMapRequest.ProtoReflect.Descriptor instead. +func (*CreateConfigMapRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{100} } -func (x *UpdateConfigMapRequest) GetSystemLevel() bool { +func (x *CreateConfigMapRequest) GetSystemLevel() bool { if x != nil { return x.SystemLevel } return false } -func (x *UpdateConfigMapRequest) GetProject() string { +func (x *CreateConfigMapRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *UpdateConfigMapRequest) GetName() string { +func (x *CreateConfigMapRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *UpdateConfigMapRequest) GetDescription() string { +func (x *CreateConfigMapRequest) GetDescription() string { if x != nil { return x.Description } return "" } -func (x *UpdateConfigMapRequest) GetData() map[string]string { +func (x *CreateConfigMapRequest) GetData() map[string]string { if x != nil { return x.Data } return nil } -func (x *UpdateConfigMapRequest) GetReplicate() bool { +func (x *CreateConfigMapRequest) GetReplicate() bool { if x != nil { return x.Replicate } return false } -// UpdateConfigMapResponse is the response containing the updated ConfigMap. -type UpdateConfigMapResponse struct { +// CreateConfigMapResponse is the response containing the ConfigMap that was +// created. +type CreateConfigMapResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // config_map is the updated ConfigMap. - ConfigMap *v1.ConfigMap `protobuf:"bytes,1,opt,name=config_map,json=configMap,proto3" json:"config_map,omitempty"` + // config_map is the ConfigMap that was created. + ConfigMap *v11.ConfigMap `protobuf:"bytes,1,opt,name=config_map,json=configMap,proto3" json:"config_map,omitempty"` } -func (x *UpdateConfigMapResponse) Reset() { - *x = UpdateConfigMapResponse{} +func (x *CreateConfigMapResponse) Reset() { + *x = CreateConfigMapResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[102] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateConfigMapResponse) String() string { +func (x *CreateConfigMapResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateConfigMapResponse) ProtoMessage() {} +func (*CreateConfigMapResponse) ProtoMessage() {} -func (x *UpdateConfigMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[102] +func (x *CreateConfigMapResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6160,59 +6157,53 @@ func (x *UpdateConfigMapResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateConfigMapResponse.ProtoReflect.Descriptor instead. -func (*UpdateConfigMapResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{102} +// Deprecated: Use CreateConfigMapResponse.ProtoReflect.Descriptor instead. +func (*CreateConfigMapResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{101} } -func (x *UpdateConfigMapResponse) GetConfigMap() *v1.ConfigMap { +func (x *CreateConfigMapResponse) GetConfigMap() *v11.ConfigMap { if x != nil { return x.ConfigMap } return nil } -// CreateRepoCredentialsRequest is the request for creating new credentials for accessing external repositories. -type CreateRepoCredentialsRequest struct { +// DeleteConfigMapRequest is the request for deleting a project-level, +// system-level, or shared ConfigMap. +type DeleteConfigMapRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project where the credentials will be stored. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the credentials. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // description is a human-readable description of the credentials. - Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` - // type specifies the credential type (git, helm, image). - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - // repo_url is the URL of the repository or registry these credentials apply to. - RepoUrl string `protobuf:"bytes,4,opt,name=repo_url,json=repoURL,proto3" json:"repo_url,omitempty"` - // repo_url_is_regex indicates whether repo_url should be treated as a regular expression. - RepoUrlIsRegex bool `protobuf:"varint,5,opt,name=repo_url_is_regex,json=repoURLIsRegex,proto3" json:"repo_url_is_regex,omitempty"` - // username is the username for authentication. - Username string `protobuf:"bytes,6,opt,name=username,proto3" json:"username,omitempty"` - // password is the password or token for authentication. - Password string `protobuf:"bytes,7,opt,name=password,proto3" json:"password,omitempty"` + // system_level indicates whether the request is to delete a + // system-level ConfigMap instead of a project-level or shared one. + SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project in which to delete a ConfigMap. If empty + // and system_level is false, deletes a shared ConfigMap. This value is + // ignored if system_level is true. + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the ConfigMap to delete. + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } -func (x *CreateRepoCredentialsRequest) Reset() { - *x = CreateRepoCredentialsRequest{} +func (x *DeleteConfigMapRequest) Reset() { + *x = DeleteConfigMapRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[103] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateRepoCredentialsRequest) String() string { +func (x *DeleteConfigMapRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateRepoCredentialsRequest) ProtoMessage() {} +func (*DeleteConfigMapRequest) ProtoMessage() {} -func (x *CreateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[103] +func (x *DeleteConfigMapRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6223,94 +6214,56 @@ func (x *CreateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateRepoCredentialsRequest.ProtoReflect.Descriptor instead. -func (*CreateRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{103} -} - -func (x *CreateRepoCredentialsRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *CreateRepoCredentialsRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *CreateRepoCredentialsRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *CreateRepoCredentialsRequest) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *CreateRepoCredentialsRequest) GetRepoUrl() string { - if x != nil { - return x.RepoUrl - } - return "" +// Deprecated: Use DeleteConfigMapRequest.ProtoReflect.Descriptor instead. +func (*DeleteConfigMapRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{102} } -func (x *CreateRepoCredentialsRequest) GetRepoUrlIsRegex() bool { +func (x *DeleteConfigMapRequest) GetSystemLevel() bool { if x != nil { - return x.RepoUrlIsRegex + return x.SystemLevel } return false } -func (x *CreateRepoCredentialsRequest) GetUsername() string { +func (x *DeleteConfigMapRequest) GetProject() string { if x != nil { - return x.Username + return x.Project } return "" } -func (x *CreateRepoCredentialsRequest) GetPassword() string { +func (x *DeleteConfigMapRequest) GetName() string { if x != nil { - return x.Password + return x.Name } return "" } -// CreateRepoCredentialsResponse contains the newly created repository credentials. -type CreateRepoCredentialsResponse struct { +// DeleteConfigMapResponse is the response returned after deleting a ConfigMap. +type DeleteConfigMapResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // credentials is the created Kubernetes Secret containing the credentials. - Credentials *v1.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *CreateRepoCredentialsResponse) Reset() { - *x = CreateRepoCredentialsResponse{} +func (x *DeleteConfigMapResponse) Reset() { + *x = DeleteConfigMapResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[104] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateRepoCredentialsResponse) String() string { +func (x *DeleteConfigMapResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateRepoCredentialsResponse) ProtoMessage() {} +func (*DeleteConfigMapResponse) ProtoMessage() {} -func (x *CreateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[104] +func (x *DeleteConfigMapResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6321,48 +6274,44 @@ func (x *CreateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateRepoCredentialsResponse.ProtoReflect.Descriptor instead. -func (*CreateRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{104} -} - -func (x *CreateRepoCredentialsResponse) GetCredentials() *v1.Secret { - if x != nil { - return x.Credentials - } - return nil +// Deprecated: Use DeleteConfigMapResponse.ProtoReflect.Descriptor instead. +func (*DeleteConfigMapResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{103} } -// DeleteRepoCredentialsRequest is the request for deleting existing repository credentials. -type DeleteRepoCredentialsRequest struct { +// ListConfigMapsRequest is the request for listing all project-level, +// system-level, or shared ConfigMaps. +type ListConfigMapsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the credentials. - // If project is left empty, it will default to the "shared resources" namespace. + // system_level indicates whether the request is to list system-level + // ConfigMaps instead of project-level or shared ones. + SystemLevel bool `protobuf:"varint,2,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project in which to list ConfigMaps. If empty + // and system_level is false, lists shared ConfigMaps. This value is ignored + // if system_level is true. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the credentials to delete. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DeleteRepoCredentialsRequest) Reset() { - *x = DeleteRepoCredentialsRequest{} +func (x *ListConfigMapsRequest) Reset() { + *x = ListConfigMapsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[105] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteRepoCredentialsRequest) String() string { +func (x *ListConfigMapsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteRepoCredentialsRequest) ProtoMessage() {} +func (*ListConfigMapsRequest) ProtoMessage() {} -func (x *DeleteRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[105] +func (x *ListConfigMapsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6373,49 +6322,52 @@ func (x *DeleteRepoCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteRepoCredentialsRequest.ProtoReflect.Descriptor instead. -func (*DeleteRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{105} +// Deprecated: Use ListConfigMapsRequest.ProtoReflect.Descriptor instead. +func (*ListConfigMapsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{104} } -func (x *DeleteRepoCredentialsRequest) GetProject() string { +func (x *ListConfigMapsRequest) GetSystemLevel() bool { if x != nil { - return x.Project + return x.SystemLevel } - return "" + return false } -func (x *DeleteRepoCredentialsRequest) GetName() string { +func (x *ListConfigMapsRequest) GetProject() string { if x != nil { - return x.Name + return x.Project } return "" } -// DeleteRepoCredentialsResponse is the response returned after deleting repository credentials. -type DeleteRepoCredentialsResponse struct { +// ListConfigMapsResponse contains the list of ConfigMaps. +type ListConfigMapsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // config_maps is the list of ConfigMaps. + ConfigMaps []*v11.ConfigMap `protobuf:"bytes,1,rep,name=config_maps,json=configMaps,proto3" json:"config_maps,omitempty"` } -func (x *DeleteRepoCredentialsResponse) Reset() { - *x = DeleteRepoCredentialsResponse{} +func (x *ListConfigMapsResponse) Reset() { + *x = ListConfigMapsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[106] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteRepoCredentialsResponse) String() string { +func (x *ListConfigMapsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteRepoCredentialsResponse) ProtoMessage() {} +func (*ListConfigMapsResponse) ProtoMessage() {} -func (x *DeleteRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[106] +func (x *ListConfigMapsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6426,42 +6378,56 @@ func (x *DeleteRepoCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteRepoCredentialsResponse.ProtoReflect.Descriptor instead. -func (*DeleteRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{106} +// Deprecated: Use ListConfigMapsResponse.ProtoReflect.Descriptor instead. +func (*ListConfigMapsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{105} } -// GetRepoCredentialsRequest is the request for retrieving existing repository credentials. -type GetRepoCredentialsRequest struct { +func (x *ListConfigMapsResponse) GetConfigMaps() []*v11.ConfigMap { + if x != nil { + return x.ConfigMaps + } + return nil +} + +// GetConfigMapRequest is the request for getting a specific project-level, +// system-level, or shared ConfigMap. +type GetConfigMapRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the credentials. + // system_level indicates whether the request is to get a system-level + // ConfigMap instead of a project-level or shared one. + SystemLevel bool `protobuf:"varint,4,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project in which to get the ConfigMap. If empty + // and system_level is false, gets a shared ConfigMap. This value is ignored + // if system_level is true. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the credentials to retrieve. + // name is the name of the ConfigMap to retrieve. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the desired response format (structured object or raw YAML). + // format specifies the desired response format (structured object or raw + // YAML). Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *GetRepoCredentialsRequest) Reset() { - *x = GetRepoCredentialsRequest{} +func (x *GetConfigMapRequest) Reset() { + *x = GetConfigMapRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[107] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetRepoCredentialsRequest) String() string { +func (x *GetConfigMapRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetRepoCredentialsRequest) ProtoMessage() {} +func (*GetConfigMapRequest) ProtoMessage() {} -func (x *GetRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[107] +func (x *GetConfigMapRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6472,62 +6438,69 @@ func (x *GetRepoCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetRepoCredentialsRequest.ProtoReflect.Descriptor instead. -func (*GetRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{107} +// Deprecated: Use GetConfigMapRequest.ProtoReflect.Descriptor instead. +func (*GetConfigMapRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{106} } -func (x *GetRepoCredentialsRequest) GetProject() string { +func (x *GetConfigMapRequest) GetSystemLevel() bool { + if x != nil { + return x.SystemLevel + } + return false +} + +func (x *GetConfigMapRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *GetRepoCredentialsRequest) GetName() string { +func (x *GetConfigMapRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *GetRepoCredentialsRequest) GetFormat() RawFormat { +func (x *GetConfigMapRequest) GetFormat() RawFormat { if x != nil { return x.Format } return RawFormat_RAW_FORMAT_UNSPECIFIED } -// GetRepoCredentialsResponse contains the requested repository credentials information. -type GetRepoCredentialsResponse struct { +// GetConfigMapResponse contains the requested ConfigMap. +type GetConfigMapResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Result: // - // *GetRepoCredentialsResponse_Credentials - // *GetRepoCredentialsResponse_Raw - Result isGetRepoCredentialsResponse_Result `protobuf_oneof:"result"` + // *GetConfigMapResponse_ConfigMap + // *GetConfigMapResponse_Raw + Result isGetConfigMapResponse_Result `protobuf_oneof:"result"` } -func (x *GetRepoCredentialsResponse) Reset() { - *x = GetRepoCredentialsResponse{} +func (x *GetConfigMapResponse) Reset() { + *x = GetConfigMapResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[108] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetRepoCredentialsResponse) String() string { +func (x *GetConfigMapResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetRepoCredentialsResponse) ProtoMessage() {} +func (*GetConfigMapResponse) ProtoMessage() {} -func (x *GetRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[108] +func (x *GetConfigMapResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6538,77 +6511,92 @@ func (x *GetRepoCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetRepoCredentialsResponse.ProtoReflect.Descriptor instead. -func (*GetRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{108} +// Deprecated: Use GetConfigMapResponse.ProtoReflect.Descriptor instead. +func (*GetConfigMapResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{107} } -func (m *GetRepoCredentialsResponse) GetResult() isGetRepoCredentialsResponse_Result { +func (m *GetConfigMapResponse) GetResult() isGetConfigMapResponse_Result { if m != nil { return m.Result } return nil } -func (x *GetRepoCredentialsResponse) GetCredentials() *v1.Secret { - if x, ok := x.GetResult().(*GetRepoCredentialsResponse_Credentials); ok { - return x.Credentials +func (x *GetConfigMapResponse) GetConfigMap() *v11.ConfigMap { + if x, ok := x.GetResult().(*GetConfigMapResponse_ConfigMap); ok { + return x.ConfigMap } return nil } -func (x *GetRepoCredentialsResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetRepoCredentialsResponse_Raw); ok { +func (x *GetConfigMapResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetConfigMapResponse_Raw); ok { return x.Raw } return nil } -type isGetRepoCredentialsResponse_Result interface { - isGetRepoCredentialsResponse_Result() +type isGetConfigMapResponse_Result interface { + isGetConfigMapResponse_Result() } -type GetRepoCredentialsResponse_Credentials struct { - // credentials is the structured Kubernetes Secret containing the credentials. - Credentials *v1.Secret `protobuf:"bytes,1,opt,name=credentials,proto3,oneof"` +type GetConfigMapResponse_ConfigMap struct { + // config_map is the structured Kubernetes ConfigMap object. + ConfigMap *v11.ConfigMap `protobuf:"bytes,1,opt,name=config_map,json=configMap,proto3,oneof"` } -type GetRepoCredentialsResponse_Raw struct { - // raw is the raw YAML representation of the credentials. +type GetConfigMapResponse_Raw struct { + // raw is the raw YAML representation of the ConfigMap. Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` } -func (*GetRepoCredentialsResponse_Credentials) isGetRepoCredentialsResponse_Result() {} +func (*GetConfigMapResponse_ConfigMap) isGetConfigMapResponse_Result() {} -func (*GetRepoCredentialsResponse_Raw) isGetRepoCredentialsResponse_Result() {} +func (*GetConfigMapResponse_Raw) isGetConfigMapResponse_Result() {} -// ListRepoCredentialsRequest is the request for listing all repository credentials in a project. -type ListRepoCredentialsRequest struct { +// UpdateConfigMapRequest is the request for updating a project-level, +// system-level, or shared ConfigMap. +type UpdateConfigMapRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose credentials will be listed. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // system_level indicates whether the request is to update a system-level + // ConfigMap instead of a project-level or shared one. + SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project containing the ConfigMap to be updated. + // If empty and system_level is false, updates the ConfigMap in the shared + // resources namespace. This value is ignored if system_level is true. + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the ConfigMap to be updated. + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // description is a human-readable description of the ConfigMap. + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + // data contains the key-value pairs that make up the ConfigMap. + Data map[string]string `protobuf:"bytes,5,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // replicate, when true, replicates this ConfigMap to all Project namespaces + // by setting the kargo.akuity.io/replicate-to: "*" annotation. + Replicate bool `protobuf:"varint,6,opt,name=replicate,proto3" json:"replicate,omitempty"` } -func (x *ListRepoCredentialsRequest) Reset() { - *x = ListRepoCredentialsRequest{} +func (x *UpdateConfigMapRequest) Reset() { + *x = UpdateConfigMapRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[109] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListRepoCredentialsRequest) String() string { +func (x *UpdateConfigMapRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListRepoCredentialsRequest) ProtoMessage() {} +func (*UpdateConfigMapRequest) ProtoMessage() {} -func (x *ListRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[109] +func (x *UpdateConfigMapRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6619,45 +6607,80 @@ func (x *ListRepoCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListRepoCredentialsRequest.ProtoReflect.Descriptor instead. -func (*ListRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{109} +// Deprecated: Use UpdateConfigMapRequest.ProtoReflect.Descriptor instead. +func (*UpdateConfigMapRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{108} } -func (x *ListRepoCredentialsRequest) GetProject() string { +func (x *UpdateConfigMapRequest) GetSystemLevel() bool { + if x != nil { + return x.SystemLevel + } + return false +} + +func (x *UpdateConfigMapRequest) GetProject() string { if x != nil { return x.Project } return "" } -// ListRepoCredentialsResponse contains a list of repository credentials for the specified project. -type ListRepoCredentialsResponse struct { +func (x *UpdateConfigMapRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UpdateConfigMapRequest) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *UpdateConfigMapRequest) GetData() map[string]string { + if x != nil { + return x.Data + } + return nil +} + +func (x *UpdateConfigMapRequest) GetReplicate() bool { + if x != nil { + return x.Replicate + } + return false +} + +// UpdateConfigMapResponse is the response containing the updated ConfigMap. +type UpdateConfigMapResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // credentials is the list of Kubernetes Secrets containing the credentials. - Credentials []*v1.Secret `protobuf:"bytes,1,rep,name=credentials,proto3" json:"credentials,omitempty"` + // config_map is the updated ConfigMap. + ConfigMap *v11.ConfigMap `protobuf:"bytes,1,opt,name=config_map,json=configMap,proto3" json:"config_map,omitempty"` } -func (x *ListRepoCredentialsResponse) Reset() { - *x = ListRepoCredentialsResponse{} +func (x *UpdateConfigMapResponse) Reset() { + *x = UpdateConfigMapResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[110] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListRepoCredentialsResponse) String() string { +func (x *UpdateConfigMapResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListRepoCredentialsResponse) ProtoMessage() {} +func (*UpdateConfigMapResponse) ProtoMessage() {} -func (x *ListRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[110] +func (x *UpdateConfigMapResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6668,27 +6691,27 @@ func (x *ListRepoCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListRepoCredentialsResponse.ProtoReflect.Descriptor instead. -func (*ListRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{110} +// Deprecated: Use UpdateConfigMapResponse.ProtoReflect.Descriptor instead. +func (*UpdateConfigMapResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{109} } -func (x *ListRepoCredentialsResponse) GetCredentials() []*v1.Secret { +func (x *UpdateConfigMapResponse) GetConfigMap() *v11.ConfigMap { if x != nil { - return x.Credentials + return x.ConfigMap } return nil } -// UpdateRepoCredentialsRequest is the request for updating existing repository credentials. -type UpdateRepoCredentialsRequest struct { +// CreateRepoCredentialsRequest is the request for creating new credentials for accessing external repositories. +type CreateRepoCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the credentials. + // project is the name of the project where the credentials will be stored. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the credentials to update. + // name is the name of the credentials. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // description is a human-readable description of the credentials. Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` @@ -6704,23 +6727,23 @@ type UpdateRepoCredentialsRequest struct { Password string `protobuf:"bytes,7,opt,name=password,proto3" json:"password,omitempty"` } -func (x *UpdateRepoCredentialsRequest) Reset() { - *x = UpdateRepoCredentialsRequest{} +func (x *CreateRepoCredentialsRequest) Reset() { + *x = CreateRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[111] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateRepoCredentialsRequest) String() string { +func (x *CreateRepoCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateRepoCredentialsRequest) ProtoMessage() {} +func (*CreateRepoCredentialsRequest) ProtoMessage() {} -func (x *UpdateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[111] +func (x *CreateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6731,94 +6754,94 @@ func (x *UpdateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateRepoCredentialsRequest.ProtoReflect.Descriptor instead. -func (*UpdateRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{111} +// Deprecated: Use CreateRepoCredentialsRequest.ProtoReflect.Descriptor instead. +func (*CreateRepoCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{110} } -func (x *UpdateRepoCredentialsRequest) GetProject() string { +func (x *CreateRepoCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *UpdateRepoCredentialsRequest) GetName() string { +func (x *CreateRepoCredentialsRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *UpdateRepoCredentialsRequest) GetDescription() string { +func (x *CreateRepoCredentialsRequest) GetDescription() string { if x != nil { return x.Description } return "" } -func (x *UpdateRepoCredentialsRequest) GetType() string { +func (x *CreateRepoCredentialsRequest) GetType() string { if x != nil { return x.Type } return "" } -func (x *UpdateRepoCredentialsRequest) GetRepoUrl() string { +func (x *CreateRepoCredentialsRequest) GetRepoUrl() string { if x != nil { return x.RepoUrl } return "" } -func (x *UpdateRepoCredentialsRequest) GetRepoUrlIsRegex() bool { +func (x *CreateRepoCredentialsRequest) GetRepoUrlIsRegex() bool { if x != nil { return x.RepoUrlIsRegex } return false } -func (x *UpdateRepoCredentialsRequest) GetUsername() string { +func (x *CreateRepoCredentialsRequest) GetUsername() string { if x != nil { return x.Username } return "" } -func (x *UpdateRepoCredentialsRequest) GetPassword() string { +func (x *CreateRepoCredentialsRequest) GetPassword() string { if x != nil { return x.Password } return "" } -// UpdateRepoCredentialsResponse contains the updated repository credentials information. -type UpdateRepoCredentialsResponse struct { +// CreateRepoCredentialsResponse contains the newly created repository credentials. +type CreateRepoCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // credentials is the updated Kubernetes Secret containing the credentials. - Credentials *v1.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` + // credentials is the created Kubernetes Secret containing the credentials. + Credentials *v11.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *UpdateRepoCredentialsResponse) Reset() { - *x = UpdateRepoCredentialsResponse{} +func (x *CreateRepoCredentialsResponse) Reset() { + *x = CreateRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[112] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateRepoCredentialsResponse) String() string { +func (x *CreateRepoCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateRepoCredentialsResponse) ProtoMessage() {} +func (*CreateRepoCredentialsResponse) ProtoMessage() {} -func (x *UpdateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[112] +func (x *CreateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6829,51 +6852,48 @@ func (x *UpdateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateRepoCredentialsResponse.ProtoReflect.Descriptor instead. -func (*UpdateRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{112} +// Deprecated: Use CreateRepoCredentialsResponse.ProtoReflect.Descriptor instead. +func (*CreateRepoCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{111} } -func (x *UpdateRepoCredentialsResponse) GetCredentials() *v1.Secret { +func (x *CreateRepoCredentialsResponse) GetCredentials() *v11.Secret { if x != nil { return x.Credentials } return nil } -// ListGenericCredentialsRequest is the request for listing all generic -// credentials in a project, shared namespace, or system namespace. -type ListGenericCredentialsRequest struct { +// DeleteRepoCredentialsRequest is the request for deleting existing repository credentials. +type DeleteRepoCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to list generic credentials - // from the system-level namespace instead of a project-level or shared namespace. - SystemLevel bool `protobuf:"varint,2,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project whose generic credentials will be listed. - // If empty and system_level is false, lists generic credentials from the shared resources namespace. - // This value is ignored if system_level is true. + // project is the name of the project containing the credentials. + // If project is left empty, it will default to the "shared resources" namespace. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the credentials to delete. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListGenericCredentialsRequest) Reset() { - *x = ListGenericCredentialsRequest{} +func (x *DeleteRepoCredentialsRequest) Reset() { + *x = DeleteRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[113] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListGenericCredentialsRequest) String() string { +func (x *DeleteRepoCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListGenericCredentialsRequest) ProtoMessage() {} +func (*DeleteRepoCredentialsRequest) ProtoMessage() {} -func (x *ListGenericCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[113] +func (x *DeleteRepoCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6884,53 +6904,50 @@ func (x *ListGenericCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListGenericCredentialsRequest.ProtoReflect.Descriptor instead. -func (*ListGenericCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{113} +// Deprecated: Use DeleteRepoCredentialsRequest.ProtoReflect.Descriptor instead. +func (*DeleteRepoCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{112} } -func (x *ListGenericCredentialsRequest) GetSystemLevel() bool { +func (x *DeleteRepoCredentialsRequest) GetProject() string { if x != nil { - return x.SystemLevel + return x.Project } - return false + return "" } -func (x *ListGenericCredentialsRequest) GetProject() string { +func (x *DeleteRepoCredentialsRequest) GetName() string { if x != nil { - return x.Project + return x.Name } return "" } -// ListGenericCredentialsResponse contains a list of generic credentials for the specified project. -type ListGenericCredentialsResponse struct { +// DeleteRepoCredentialsResponse is the response returned after deleting repository credentials. +type DeleteRepoCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // credentials is the list of Kubernetes Secrets containing generic credentials within the project. - Credentials []*v1.Secret `protobuf:"bytes,1,rep,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *ListGenericCredentialsResponse) Reset() { - *x = ListGenericCredentialsResponse{} +func (x *DeleteRepoCredentialsResponse) Reset() { + *x = DeleteRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[114] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListGenericCredentialsResponse) String() string { +func (x *DeleteRepoCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListGenericCredentialsResponse) ProtoMessage() {} +func (*DeleteRepoCredentialsResponse) ProtoMessage() {} -func (x *ListGenericCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[114] - if protoimpl.UnsafeEnabled && x != nil { +func (x *DeleteRepoCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[113] + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -6940,60 +6957,42 @@ func (x *ListGenericCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListGenericCredentialsResponse.ProtoReflect.Descriptor instead. -func (*ListGenericCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{114} -} - -func (x *ListGenericCredentialsResponse) GetCredentials() []*v1.Secret { - if x != nil { - return x.Credentials - } - return nil +// Deprecated: Use DeleteRepoCredentialsResponse.ProtoReflect.Descriptor instead. +func (*DeleteRepoCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{113} } -// CreateGenericCredentialsRequest is the request for creating new generic -// credentials within a project, shared namespace, or system namespace. -type CreateGenericCredentialsRequest struct { +// GetRepoCredentialsRequest is the request for retrieving existing repository credentials. +type GetRepoCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to create generic credentials - // in the system-level namespace instead of a project-level or shared namespace. - SystemLevel bool `protobuf:"varint,6,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project where the generic credentials will be - // created. If empty and system_level is false, creates generic credentials in the shared resources - // namespace. This value is ignored if system_level is true. + // project is the name of the project containing the credentials. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the generic credentials to create. + // name is the name of the credentials to retrieve. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // description is a human-readable description of the generic credentials. - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // data contains the key-value pairs that make up the generic credentials data. - Data map[string]string `protobuf:"bytes,4,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // replicate, when true, replicates these credentials to all Project - // namespaces by setting the kargo.akuity.io/replicate-to: "*" annotation. - Replicate bool `protobuf:"varint,5,opt,name=replicate,proto3" json:"replicate,omitempty"` + // format specifies the desired response format (structured object or raw YAML). + Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *CreateGenericCredentialsRequest) Reset() { - *x = CreateGenericCredentialsRequest{} +func (x *GetRepoCredentialsRequest) Reset() { + *x = GetRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[115] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateGenericCredentialsRequest) String() string { +func (x *GetRepoCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateGenericCredentialsRequest) ProtoMessage() {} +func (*GetRepoCredentialsRequest) ProtoMessage() {} -func (x *CreateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[115] +func (x *GetRepoCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7004,80 +7003,62 @@ func (x *CreateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateGenericCredentialsRequest.ProtoReflect.Descriptor instead. -func (*CreateGenericCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{115} -} - -func (x *CreateGenericCredentialsRequest) GetSystemLevel() bool { - if x != nil { - return x.SystemLevel - } - return false +// Deprecated: Use GetRepoCredentialsRequest.ProtoReflect.Descriptor instead. +func (*GetRepoCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{114} } -func (x *CreateGenericCredentialsRequest) GetProject() string { +func (x *GetRepoCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *CreateGenericCredentialsRequest) GetName() string { +func (x *GetRepoCredentialsRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *CreateGenericCredentialsRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *CreateGenericCredentialsRequest) GetData() map[string]string { - if x != nil { - return x.Data - } - return nil -} - -func (x *CreateGenericCredentialsRequest) GetReplicate() bool { +func (x *GetRepoCredentialsRequest) GetFormat() RawFormat { if x != nil { - return x.Replicate + return x.Format } - return false + return RawFormat_RAW_FORMAT_UNSPECIFIED } -// CreateGenericCredentialsResponse contains the newly created generic credentials. -type CreateGenericCredentialsResponse struct { +// GetRepoCredentialsResponse contains the requested repository credentials information. +type GetRepoCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // credentials is the created Kubernetes Secret containing generic credentials within the project. - Credentials *v1.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` + // Types that are assignable to Result: + // + // *GetRepoCredentialsResponse_Credentials + // *GetRepoCredentialsResponse_Raw + Result isGetRepoCredentialsResponse_Result `protobuf_oneof:"result"` } -func (x *CreateGenericCredentialsResponse) Reset() { - *x = CreateGenericCredentialsResponse{} +func (x *GetRepoCredentialsResponse) Reset() { + *x = GetRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[116] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateGenericCredentialsResponse) String() string { +func (x *GetRepoCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateGenericCredentialsResponse) ProtoMessage() {} +func (*GetRepoCredentialsResponse) ProtoMessage() {} -func (x *CreateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[116] +func (x *GetRepoCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7088,59 +7069,77 @@ func (x *CreateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateGenericCredentialsResponse.ProtoReflect.Descriptor instead. -func (*CreateGenericCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{116} +// Deprecated: Use GetRepoCredentialsResponse.ProtoReflect.Descriptor instead. +func (*GetRepoCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{115} } -func (x *CreateGenericCredentialsResponse) GetCredentials() *v1.Secret { - if x != nil { +func (m *GetRepoCredentialsResponse) GetResult() isGetRepoCredentialsResponse_Result { + if m != nil { + return m.Result + } + return nil +} + +func (x *GetRepoCredentialsResponse) GetCredentials() *v11.Secret { + if x, ok := x.GetResult().(*GetRepoCredentialsResponse_Credentials); ok { return x.Credentials } return nil } -// UpdateGenericCredentialsRequest is the request for updating existing generic credentials. -type UpdateGenericCredentialsRequest struct { +func (x *GetRepoCredentialsResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetRepoCredentialsResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetRepoCredentialsResponse_Result interface { + isGetRepoCredentialsResponse_Result() +} + +type GetRepoCredentialsResponse_Credentials struct { + // credentials is the structured Kubernetes Secret containing the credentials. + Credentials *v11.Secret `protobuf:"bytes,1,opt,name=credentials,proto3,oneof"` +} + +type GetRepoCredentialsResponse_Raw struct { + // raw is the raw YAML representation of the credentials. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetRepoCredentialsResponse_Credentials) isGetRepoCredentialsResponse_Result() {} + +func (*GetRepoCredentialsResponse_Raw) isGetRepoCredentialsResponse_Result() {} + +// ListRepoCredentialsRequest is the request for listing all repository credentials in a project. +type ListRepoCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to update generic credentials - // in the system-level namespace instead of a project-level or shared namespace. - SystemLevel bool `protobuf:"varint,6,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project containing the generic credentials. If - // empty and system_level is false, updates generic credentials in the shared resources namespace. - // This value is ignored if system_level is true. + // project is the name of the project whose credentials will be listed. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the generic credentials to update. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // description is a human-readable description of the generic credentials. - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // data contains the key-value pairs that make up the generic credentials data. - Data map[string]string `protobuf:"bytes,4,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // replicate, when true, replicates these credentials to all Project - // namespaces by setting the kargo.akuity.io/replicate-to: "*" annotation. - Replicate bool `protobuf:"varint,5,opt,name=replicate,proto3" json:"replicate,omitempty"` } -func (x *UpdateGenericCredentialsRequest) Reset() { - *x = UpdateGenericCredentialsRequest{} +func (x *ListRepoCredentialsRequest) Reset() { + *x = ListRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[117] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateGenericCredentialsRequest) String() string { +func (x *ListRepoCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateGenericCredentialsRequest) ProtoMessage() {} +func (*ListRepoCredentialsRequest) ProtoMessage() {} -func (x *UpdateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[117] +func (x *ListRepoCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7151,80 +7150,45 @@ func (x *UpdateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateGenericCredentialsRequest.ProtoReflect.Descriptor instead. -func (*UpdateGenericCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{117} -} - -func (x *UpdateGenericCredentialsRequest) GetSystemLevel() bool { - if x != nil { - return x.SystemLevel - } - return false +// Deprecated: Use ListRepoCredentialsRequest.ProtoReflect.Descriptor instead. +func (*ListRepoCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{116} } -func (x *UpdateGenericCredentialsRequest) GetProject() string { +func (x *ListRepoCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *UpdateGenericCredentialsRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *UpdateGenericCredentialsRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *UpdateGenericCredentialsRequest) GetData() map[string]string { - if x != nil { - return x.Data - } - return nil -} - -func (x *UpdateGenericCredentialsRequest) GetReplicate() bool { - if x != nil { - return x.Replicate - } - return false -} - -// UpdateGenericCredentialsResponse contains the updated generic credentials information. -type UpdateGenericCredentialsResponse struct { +// ListRepoCredentialsResponse contains a list of repository credentials for the specified project. +type ListRepoCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // credentials is the updated Kubernetes Secret containing generic credentials within the project. - Credentials *v1.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` + // credentials is the list of Kubernetes Secrets containing the credentials. + Credentials []*v11.Secret `protobuf:"bytes,1,rep,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *UpdateGenericCredentialsResponse) Reset() { - *x = UpdateGenericCredentialsResponse{} +func (x *ListRepoCredentialsResponse) Reset() { + *x = ListRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[118] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateGenericCredentialsResponse) String() string { +func (x *ListRepoCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateGenericCredentialsResponse) ProtoMessage() {} +func (*ListRepoCredentialsResponse) ProtoMessage() {} -func (x *UpdateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[118] +func (x *ListRepoCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7235,53 +7199,59 @@ func (x *UpdateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateGenericCredentialsResponse.ProtoReflect.Descriptor instead. -func (*UpdateGenericCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{118} +// Deprecated: Use ListRepoCredentialsResponse.ProtoReflect.Descriptor instead. +func (*ListRepoCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{117} } -func (x *UpdateGenericCredentialsResponse) GetCredentials() *v1.Secret { +func (x *ListRepoCredentialsResponse) GetCredentials() []*v11.Secret { if x != nil { return x.Credentials } return nil } -// DeleteGenericCredentialsRequest is the request for deleting generic -// credentials. -type DeleteGenericCredentialsRequest struct { +// UpdateRepoCredentialsRequest is the request for updating existing repository credentials. +type UpdateRepoCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to delete generic credentials - // from the system-level namespace instead of a project-level or shared namespace. - SystemLevel bool `protobuf:"varint,3,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project containing the generic credentials. If - // empty and system_level is false, deletes generic credentials from the shared resources namespace. - // This value is ignored if system_level is true. + // project is the name of the project containing the credentials. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the generic credentials to delete. + // name is the name of the credentials to update. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // description is a human-readable description of the credentials. + Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` + // type specifies the credential type (git, helm, image). + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + // repo_url is the URL of the repository or registry these credentials apply to. + RepoUrl string `protobuf:"bytes,4,opt,name=repo_url,json=repoURL,proto3" json:"repo_url,omitempty"` + // repo_url_is_regex indicates whether repo_url should be treated as a regular expression. + RepoUrlIsRegex bool `protobuf:"varint,5,opt,name=repo_url_is_regex,json=repoURLIsRegex,proto3" json:"repo_url_is_regex,omitempty"` + // username is the username for authentication. + Username string `protobuf:"bytes,6,opt,name=username,proto3" json:"username,omitempty"` + // password is the password or token for authentication. + Password string `protobuf:"bytes,7,opt,name=password,proto3" json:"password,omitempty"` } -func (x *DeleteGenericCredentialsRequest) Reset() { - *x = DeleteGenericCredentialsRequest{} +func (x *UpdateRepoCredentialsRequest) Reset() { + *x = UpdateRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[119] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteGenericCredentialsRequest) String() string { +func (x *UpdateRepoCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteGenericCredentialsRequest) ProtoMessage() {} +func (*UpdateRepoCredentialsRequest) ProtoMessage() {} -func (x *DeleteGenericCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[119] +func (x *UpdateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7292,56 +7262,94 @@ func (x *DeleteGenericCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteGenericCredentialsRequest.ProtoReflect.Descriptor instead. -func (*DeleteGenericCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{119} +// Deprecated: Use UpdateRepoCredentialsRequest.ProtoReflect.Descriptor instead. +func (*UpdateRepoCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{118} } -func (x *DeleteGenericCredentialsRequest) GetSystemLevel() bool { +func (x *UpdateRepoCredentialsRequest) GetProject() string { if x != nil { - return x.SystemLevel + return x.Project + } + return "" +} + +func (x *UpdateRepoCredentialsRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UpdateRepoCredentialsRequest) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *UpdateRepoCredentialsRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *UpdateRepoCredentialsRequest) GetRepoUrl() string { + if x != nil { + return x.RepoUrl + } + return "" +} + +func (x *UpdateRepoCredentialsRequest) GetRepoUrlIsRegex() bool { + if x != nil { + return x.RepoUrlIsRegex } return false } -func (x *DeleteGenericCredentialsRequest) GetProject() string { +func (x *UpdateRepoCredentialsRequest) GetUsername() string { if x != nil { - return x.Project + return x.Username } return "" } -func (x *DeleteGenericCredentialsRequest) GetName() string { +func (x *UpdateRepoCredentialsRequest) GetPassword() string { if x != nil { - return x.Name + return x.Password } return "" } -// DeleteGenericCredentialsResponse is the response returned after deleting generic credentials. -type DeleteGenericCredentialsResponse struct { +// UpdateRepoCredentialsResponse contains the updated repository credentials information. +type UpdateRepoCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // credentials is the updated Kubernetes Secret containing the credentials. + Credentials *v11.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *DeleteGenericCredentialsResponse) Reset() { - *x = DeleteGenericCredentialsResponse{} +func (x *UpdateRepoCredentialsResponse) Reset() { + *x = UpdateRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[120] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteGenericCredentialsResponse) String() string { +func (x *UpdateRepoCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteGenericCredentialsResponse) ProtoMessage() {} +func (*UpdateRepoCredentialsResponse) ProtoMessage() {} -func (x *DeleteGenericCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[120] +func (x *UpdateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7352,38 +7360,51 @@ func (x *DeleteGenericCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteGenericCredentialsResponse.ProtoReflect.Descriptor instead. -func (*DeleteGenericCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{120} +// Deprecated: Use UpdateRepoCredentialsResponse.ProtoReflect.Descriptor instead. +func (*UpdateRepoCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{119} } -// ListAnalysisTemplatesRequest is the request for listing all analysis templates in a project. -type ListAnalysisTemplatesRequest struct { +func (x *UpdateRepoCredentialsResponse) GetCredentials() *v11.Secret { + if x != nil { + return x.Credentials + } + return nil +} + +// ListGenericCredentialsRequest is the request for listing all generic +// credentials in a project, shared namespace, or system namespace. +type ListGenericCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose analysis templates will be listed. + // system_level indicates whether the request is to list generic credentials + // from the system-level namespace instead of a project-level or shared namespace. + SystemLevel bool `protobuf:"varint,2,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project whose generic credentials will be listed. + // If empty and system_level is false, lists generic credentials from the shared resources namespace. + // This value is ignored if system_level is true. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *ListAnalysisTemplatesRequest) Reset() { - *x = ListAnalysisTemplatesRequest{} +func (x *ListGenericCredentialsRequest) Reset() { + *x = ListGenericCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[121] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListAnalysisTemplatesRequest) String() string { +func (x *ListGenericCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAnalysisTemplatesRequest) ProtoMessage() {} +func (*ListGenericCredentialsRequest) ProtoMessage() {} -func (x *ListAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[121] +func (x *ListGenericCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7394,45 +7415,52 @@ func (x *ListAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAnalysisTemplatesRequest.ProtoReflect.Descriptor instead. -func (*ListAnalysisTemplatesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{121} +// Deprecated: Use ListGenericCredentialsRequest.ProtoReflect.Descriptor instead. +func (*ListGenericCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{120} } -func (x *ListAnalysisTemplatesRequest) GetProject() string { +func (x *ListGenericCredentialsRequest) GetSystemLevel() bool { + if x != nil { + return x.SystemLevel + } + return false +} + +func (x *ListGenericCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -// ListAnalysisTemplatesResponse contains a list of analysis templates for the specified project. -type ListAnalysisTemplatesResponse struct { +// ListGenericCredentialsResponse contains a list of generic credentials for the specified project. +type ListGenericCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // analysis_templates is the list of AnalysisTemplate resources within the project. - AnalysisTemplates []*v1alpha11.AnalysisTemplate `protobuf:"bytes,1,rep,name=analysis_templates,json=analysisTemplates,proto3" json:"analysis_templates,omitempty"` + // credentials is the list of Kubernetes Secrets containing generic credentials within the project. + Credentials []*v11.Secret `protobuf:"bytes,1,rep,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *ListAnalysisTemplatesResponse) Reset() { - *x = ListAnalysisTemplatesResponse{} +func (x *ListGenericCredentialsResponse) Reset() { + *x = ListGenericCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[122] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListAnalysisTemplatesResponse) String() string { +func (x *ListGenericCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAnalysisTemplatesResponse) ProtoMessage() {} +func (*ListGenericCredentialsResponse) ProtoMessage() {} -func (x *ListAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[122] +func (x *ListGenericCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7443,49 +7471,60 @@ func (x *ListAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAnalysisTemplatesResponse.ProtoReflect.Descriptor instead. -func (*ListAnalysisTemplatesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{122} +// Deprecated: Use ListGenericCredentialsResponse.ProtoReflect.Descriptor instead. +func (*ListGenericCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{121} } -func (x *ListAnalysisTemplatesResponse) GetAnalysisTemplates() []*v1alpha11.AnalysisTemplate { +func (x *ListGenericCredentialsResponse) GetCredentials() []*v11.Secret { if x != nil { - return x.AnalysisTemplates + return x.Credentials } return nil } -// GetAnalysisTemplateRequest is the request for retrieving a specific analysis template. -type GetAnalysisTemplateRequest struct { +// CreateGenericCredentialsRequest is the request for creating new generic +// credentials within a project, shared namespace, or system namespace. +type CreateGenericCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the analysis template. + // system_level indicates whether the request is to create generic credentials + // in the system-level namespace instead of a project-level or shared namespace. + SystemLevel bool `protobuf:"varint,6,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project where the generic credentials will be + // created. If empty and system_level is false, creates generic credentials in the shared resources + // namespace. This value is ignored if system_level is true. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the analysis template to retrieve. + // name is the name of the generic credentials to create. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the desired response format (structured object or raw YAML). - Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` + // description is a human-readable description of the generic credentials. + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // data contains the key-value pairs that make up the generic credentials data. + Data map[string]string `protobuf:"bytes,4,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // replicate, when true, replicates these credentials to all Project + // namespaces by setting the kargo.akuity.io/replicate-to: "*" annotation. + Replicate bool `protobuf:"varint,5,opt,name=replicate,proto3" json:"replicate,omitempty"` } -func (x *GetAnalysisTemplateRequest) Reset() { - *x = GetAnalysisTemplateRequest{} +func (x *CreateGenericCredentialsRequest) Reset() { + *x = CreateGenericCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[123] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetAnalysisTemplateRequest) String() string { +func (x *CreateGenericCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAnalysisTemplateRequest) ProtoMessage() {} +func (*CreateGenericCredentialsRequest) ProtoMessage() {} -func (x *GetAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[123] +func (x *CreateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7496,62 +7535,80 @@ func (x *GetAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAnalysisTemplateRequest.ProtoReflect.Descriptor instead. -func (*GetAnalysisTemplateRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{123} +// Deprecated: Use CreateGenericCredentialsRequest.ProtoReflect.Descriptor instead. +func (*CreateGenericCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{122} } -func (x *GetAnalysisTemplateRequest) GetProject() string { +func (x *CreateGenericCredentialsRequest) GetSystemLevel() bool { + if x != nil { + return x.SystemLevel + } + return false +} + +func (x *CreateGenericCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *GetAnalysisTemplateRequest) GetName() string { +func (x *CreateGenericCredentialsRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *GetAnalysisTemplateRequest) GetFormat() RawFormat { +func (x *CreateGenericCredentialsRequest) GetDescription() string { if x != nil { - return x.Format + return x.Description } - return RawFormat_RAW_FORMAT_UNSPECIFIED + return "" } -// GetAnalysisTemplateResponse contains the requested analysis template information. -type GetAnalysisTemplateResponse struct { +func (x *CreateGenericCredentialsRequest) GetData() map[string]string { + if x != nil { + return x.Data + } + return nil +} + +func (x *CreateGenericCredentialsRequest) GetReplicate() bool { + if x != nil { + return x.Replicate + } + return false +} + +// CreateGenericCredentialsResponse contains the newly created generic credentials. +type CreateGenericCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Result: - // - // *GetAnalysisTemplateResponse_AnalysisTemplate - // *GetAnalysisTemplateResponse_Raw - Result isGetAnalysisTemplateResponse_Result `protobuf_oneof:"result"` + // credentials is the created Kubernetes Secret containing generic credentials within the project. + Credentials *v11.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *GetAnalysisTemplateResponse) Reset() { - *x = GetAnalysisTemplateResponse{} +func (x *CreateGenericCredentialsResponse) Reset() { + *x = CreateGenericCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[124] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetAnalysisTemplateResponse) String() string { +func (x *CreateGenericCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAnalysisTemplateResponse) ProtoMessage() {} +func (*CreateGenericCredentialsResponse) ProtoMessage() {} -func (x *GetAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[124] +func (x *CreateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7562,79 +7619,59 @@ func (x *GetAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAnalysisTemplateResponse.ProtoReflect.Descriptor instead. -func (*GetAnalysisTemplateResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{124} -} - -func (m *GetAnalysisTemplateResponse) GetResult() isGetAnalysisTemplateResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetAnalysisTemplateResponse) GetAnalysisTemplate() *v1alpha11.AnalysisTemplate { - if x, ok := x.GetResult().(*GetAnalysisTemplateResponse_AnalysisTemplate); ok { - return x.AnalysisTemplate - } - return nil +// Deprecated: Use CreateGenericCredentialsResponse.ProtoReflect.Descriptor instead. +func (*CreateGenericCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{123} } -func (x *GetAnalysisTemplateResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetAnalysisTemplateResponse_Raw); ok { - return x.Raw +func (x *CreateGenericCredentialsResponse) GetCredentials() *v11.Secret { + if x != nil { + return x.Credentials } return nil } -type isGetAnalysisTemplateResponse_Result interface { - isGetAnalysisTemplateResponse_Result() -} - -type GetAnalysisTemplateResponse_AnalysisTemplate struct { - // analysis_template is the structured AnalysisTemplate resource. - AnalysisTemplate *v1alpha11.AnalysisTemplate `protobuf:"bytes,1,opt,name=analysis_template,json=analysisTemplate,proto3,oneof"` -} - -type GetAnalysisTemplateResponse_Raw struct { - // raw is the raw YAML representation of the analysis template. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` -} - -func (*GetAnalysisTemplateResponse_AnalysisTemplate) isGetAnalysisTemplateResponse_Result() {} - -func (*GetAnalysisTemplateResponse_Raw) isGetAnalysisTemplateResponse_Result() {} - -// DeleteAnalysisTemplateRequest is the request for deleting an analysis template. -type DeleteAnalysisTemplateRequest struct { +// UpdateGenericCredentialsRequest is the request for updating existing generic credentials. +type UpdateGenericCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the analysis template. + // system_level indicates whether the request is to update generic credentials + // in the system-level namespace instead of a project-level or shared namespace. + SystemLevel bool `protobuf:"varint,6,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project containing the generic credentials. If + // empty and system_level is false, updates generic credentials in the shared resources namespace. + // This value is ignored if system_level is true. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the analysis template to delete. + // name is the name of the generic credentials to update. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // description is a human-readable description of the generic credentials. + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // data contains the key-value pairs that make up the generic credentials data. + Data map[string]string `protobuf:"bytes,4,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // replicate, when true, replicates these credentials to all Project + // namespaces by setting the kargo.akuity.io/replicate-to: "*" annotation. + Replicate bool `protobuf:"varint,5,opt,name=replicate,proto3" json:"replicate,omitempty"` } -func (x *DeleteAnalysisTemplateRequest) Reset() { - *x = DeleteAnalysisTemplateRequest{} +func (x *UpdateGenericCredentialsRequest) Reset() { + *x = UpdateGenericCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[125] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteAnalysisTemplateRequest) String() string { +func (x *UpdateGenericCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteAnalysisTemplateRequest) ProtoMessage() {} +func (*UpdateGenericCredentialsRequest) ProtoMessage() {} -func (x *DeleteAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[125] +func (x *UpdateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7645,49 +7682,80 @@ func (x *DeleteAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteAnalysisTemplateRequest.ProtoReflect.Descriptor instead. -func (*DeleteAnalysisTemplateRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{125} +// Deprecated: Use UpdateGenericCredentialsRequest.ProtoReflect.Descriptor instead. +func (*UpdateGenericCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{124} } -func (x *DeleteAnalysisTemplateRequest) GetProject() string { +func (x *UpdateGenericCredentialsRequest) GetSystemLevel() bool { + if x != nil { + return x.SystemLevel + } + return false +} + +func (x *UpdateGenericCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *DeleteAnalysisTemplateRequest) GetName() string { +func (x *UpdateGenericCredentialsRequest) GetName() string { if x != nil { return x.Name } return "" } -// DeleteAnalysisTemplateResponse is the response returned after deleting an analysis template. -type DeleteAnalysisTemplateResponse struct { +func (x *UpdateGenericCredentialsRequest) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *UpdateGenericCredentialsRequest) GetData() map[string]string { + if x != nil { + return x.Data + } + return nil +} + +func (x *UpdateGenericCredentialsRequest) GetReplicate() bool { + if x != nil { + return x.Replicate + } + return false +} + +// UpdateGenericCredentialsResponse contains the updated generic credentials information. +type UpdateGenericCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // credentials is the updated Kubernetes Secret containing generic credentials within the project. + Credentials *v11.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *DeleteAnalysisTemplateResponse) Reset() { - *x = DeleteAnalysisTemplateResponse{} +func (x *UpdateGenericCredentialsResponse) Reset() { + *x = UpdateGenericCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[126] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteAnalysisTemplateResponse) String() string { +func (x *UpdateGenericCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteAnalysisTemplateResponse) ProtoMessage() {} +func (*UpdateGenericCredentialsResponse) ProtoMessage() {} -func (x *DeleteAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[126] +func (x *UpdateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7698,35 +7766,53 @@ func (x *DeleteAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteAnalysisTemplateResponse.ProtoReflect.Descriptor instead. -func (*DeleteAnalysisTemplateResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{126} +// Deprecated: Use UpdateGenericCredentialsResponse.ProtoReflect.Descriptor instead. +func (*UpdateGenericCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{125} } -// ListClusterAnalysisTemplatesRequest is the request for listing all cluster-level analysis templates. -type ListClusterAnalysisTemplatesRequest struct { +func (x *UpdateGenericCredentialsResponse) GetCredentials() *v11.Secret { + if x != nil { + return x.Credentials + } + return nil +} + +// DeleteGenericCredentialsRequest is the request for deleting generic +// credentials. +type DeleteGenericCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // system_level indicates whether the request is to delete generic credentials + // from the system-level namespace instead of a project-level or shared namespace. + SystemLevel bool `protobuf:"varint,3,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project containing the generic credentials. If + // empty and system_level is false, deletes generic credentials from the shared resources namespace. + // This value is ignored if system_level is true. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the generic credentials to delete. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListClusterAnalysisTemplatesRequest) Reset() { - *x = ListClusterAnalysisTemplatesRequest{} +func (x *DeleteGenericCredentialsRequest) Reset() { + *x = DeleteGenericCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[127] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListClusterAnalysisTemplatesRequest) String() string { +func (x *DeleteGenericCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListClusterAnalysisTemplatesRequest) ProtoMessage() {} +func (*DeleteGenericCredentialsRequest) ProtoMessage() {} -func (x *ListClusterAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[127] +func (x *DeleteGenericCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7737,37 +7823,97 @@ func (x *ListClusterAnalysisTemplatesRequest) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use ListClusterAnalysisTemplatesRequest.ProtoReflect.Descriptor instead. -func (*ListClusterAnalysisTemplatesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{127} +// Deprecated: Use DeleteGenericCredentialsRequest.ProtoReflect.Descriptor instead. +func (*DeleteGenericCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{126} } -// ListClusterAnalysisTemplatesResponse contains a list of cluster-level analysis templates. -type ListClusterAnalysisTemplatesResponse struct { +func (x *DeleteGenericCredentialsRequest) GetSystemLevel() bool { + if x != nil { + return x.SystemLevel + } + return false +} + +func (x *DeleteGenericCredentialsRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *DeleteGenericCredentialsRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// DeleteGenericCredentialsResponse is the response returned after deleting generic credentials. +type DeleteGenericCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // cluster_analysis_templates is the list of ClusterAnalysisTemplate resources. - ClusterAnalysisTemplates []*v1alpha11.ClusterAnalysisTemplate `protobuf:"bytes,1,rep,name=cluster_analysis_templates,json=clusteranalysisTemplates,proto3" json:"cluster_analysis_templates,omitempty"` } -func (x *ListClusterAnalysisTemplatesResponse) Reset() { - *x = ListClusterAnalysisTemplatesResponse{} +func (x *DeleteGenericCredentialsResponse) Reset() { + *x = DeleteGenericCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[128] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListClusterAnalysisTemplatesResponse) String() string { +func (x *DeleteGenericCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListClusterAnalysisTemplatesResponse) ProtoMessage() {} +func (*DeleteGenericCredentialsResponse) ProtoMessage() {} -func (x *ListClusterAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { +func (x *DeleteGenericCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[127] + 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 DeleteGenericCredentialsResponse.ProtoReflect.Descriptor instead. +func (*DeleteGenericCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{127} +} + +// ListAnalysisTemplatesRequest is the request for listing all analysis templates in a project. +type ListAnalysisTemplatesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // project is the name of the project whose analysis templates will be listed. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` +} + +func (x *ListAnalysisTemplatesRequest) Reset() { + *x = ListAnalysisTemplatesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAnalysisTemplatesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAnalysisTemplatesRequest) ProtoMessage() {} + +func (x *ListAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7779,47 +7925,98 @@ func (x *ListClusterAnalysisTemplatesResponse) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use ListClusterAnalysisTemplatesResponse.ProtoReflect.Descriptor instead. -func (*ListClusterAnalysisTemplatesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListAnalysisTemplatesRequest.ProtoReflect.Descriptor instead. +func (*ListAnalysisTemplatesRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{128} } -func (x *ListClusterAnalysisTemplatesResponse) GetClusterAnalysisTemplates() []*v1alpha11.ClusterAnalysisTemplate { +func (x *ListAnalysisTemplatesRequest) GetProject() string { if x != nil { - return x.ClusterAnalysisTemplates + return x.Project + } + return "" +} + +// ListAnalysisTemplatesResponse contains a list of analysis templates for the specified project. +type ListAnalysisTemplatesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // analysis_templates is the list of AnalysisTemplate resources within the project. + AnalysisTemplates []*v1alpha11.AnalysisTemplate `protobuf:"bytes,1,rep,name=analysis_templates,json=analysisTemplates,proto3" json:"analysis_templates,omitempty"` +} + +func (x *ListAnalysisTemplatesResponse) Reset() { + *x = ListAnalysisTemplatesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAnalysisTemplatesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAnalysisTemplatesResponse) ProtoMessage() {} + +func (x *ListAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[129] + 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 ListAnalysisTemplatesResponse.ProtoReflect.Descriptor instead. +func (*ListAnalysisTemplatesResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{129} +} + +func (x *ListAnalysisTemplatesResponse) GetAnalysisTemplates() []*v1alpha11.AnalysisTemplate { + if x != nil { + return x.AnalysisTemplates } return nil } -// GetClusterAnalysisTemplateRequest is the request for retrieving a specific cluster analysis template. -type GetClusterAnalysisTemplateRequest struct { +// GetAnalysisTemplateRequest is the request for retrieving a specific analysis template. +type GetAnalysisTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // name is the name of the cluster analysis template to retrieve. + // project is the name of the project containing the analysis template. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the analysis template to retrieve. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // format specifies the desired response format (structured object or raw YAML). Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *GetClusterAnalysisTemplateRequest) Reset() { - *x = GetClusterAnalysisTemplateRequest{} +func (x *GetAnalysisTemplateRequest) Reset() { + *x = GetAnalysisTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[129] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetClusterAnalysisTemplateRequest) String() string { +func (x *GetAnalysisTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClusterAnalysisTemplateRequest) ProtoMessage() {} +func (*GetAnalysisTemplateRequest) ProtoMessage() {} -func (x *GetClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[129] +func (x *GetAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7830,55 +8027,62 @@ func (x *GetClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use GetClusterAnalysisTemplateRequest.ProtoReflect.Descriptor instead. -func (*GetClusterAnalysisTemplateRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{129} +// Deprecated: Use GetAnalysisTemplateRequest.ProtoReflect.Descriptor instead. +func (*GetAnalysisTemplateRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{130} } -func (x *GetClusterAnalysisTemplateRequest) GetName() string { +func (x *GetAnalysisTemplateRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *GetAnalysisTemplateRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *GetClusterAnalysisTemplateRequest) GetFormat() RawFormat { +func (x *GetAnalysisTemplateRequest) GetFormat() RawFormat { if x != nil { return x.Format } return RawFormat_RAW_FORMAT_UNSPECIFIED } -// GetClusterAnalysisTemplateResponse contains the requested cluster analysis template information. -type GetClusterAnalysisTemplateResponse struct { +// GetAnalysisTemplateResponse contains the requested analysis template information. +type GetAnalysisTemplateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Result: // - // *GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate - // *GetClusterAnalysisTemplateResponse_Raw - Result isGetClusterAnalysisTemplateResponse_Result `protobuf_oneof:"result"` + // *GetAnalysisTemplateResponse_AnalysisTemplate + // *GetAnalysisTemplateResponse_Raw + Result isGetAnalysisTemplateResponse_Result `protobuf_oneof:"result"` } -func (x *GetClusterAnalysisTemplateResponse) Reset() { - *x = GetClusterAnalysisTemplateResponse{} +func (x *GetAnalysisTemplateResponse) Reset() { + *x = GetAnalysisTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[130] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetClusterAnalysisTemplateResponse) String() string { +func (x *GetAnalysisTemplateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClusterAnalysisTemplateResponse) ProtoMessage() {} +func (*GetAnalysisTemplateResponse) ProtoMessage() {} -func (x *GetClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[130] +func (x *GetAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7889,78 +8093,79 @@ func (x *GetClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use GetClusterAnalysisTemplateResponse.ProtoReflect.Descriptor instead. -func (*GetClusterAnalysisTemplateResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{130} +// Deprecated: Use GetAnalysisTemplateResponse.ProtoReflect.Descriptor instead. +func (*GetAnalysisTemplateResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{131} } -func (m *GetClusterAnalysisTemplateResponse) GetResult() isGetClusterAnalysisTemplateResponse_Result { +func (m *GetAnalysisTemplateResponse) GetResult() isGetAnalysisTemplateResponse_Result { if m != nil { return m.Result } return nil } -func (x *GetClusterAnalysisTemplateResponse) GetClusterAnalysisTemplate() *v1alpha11.ClusterAnalysisTemplate { - if x, ok := x.GetResult().(*GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate); ok { - return x.ClusterAnalysisTemplate +func (x *GetAnalysisTemplateResponse) GetAnalysisTemplate() *v1alpha11.AnalysisTemplate { + if x, ok := x.GetResult().(*GetAnalysisTemplateResponse_AnalysisTemplate); ok { + return x.AnalysisTemplate } return nil } -func (x *GetClusterAnalysisTemplateResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetClusterAnalysisTemplateResponse_Raw); ok { +func (x *GetAnalysisTemplateResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetAnalysisTemplateResponse_Raw); ok { return x.Raw } return nil } -type isGetClusterAnalysisTemplateResponse_Result interface { - isGetClusterAnalysisTemplateResponse_Result() +type isGetAnalysisTemplateResponse_Result interface { + isGetAnalysisTemplateResponse_Result() } -type GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate struct { - // cluster_analysis_template is the structured ClusterAnalysisTemplate resource. - ClusterAnalysisTemplate *v1alpha11.ClusterAnalysisTemplate `protobuf:"bytes,1,opt,name=cluster_analysis_template,json=clusterAnalysisTemplate,proto3,oneof"` +type GetAnalysisTemplateResponse_AnalysisTemplate struct { + // analysis_template is the structured AnalysisTemplate resource. + AnalysisTemplate *v1alpha11.AnalysisTemplate `protobuf:"bytes,1,opt,name=analysis_template,json=analysisTemplate,proto3,oneof"` } -type GetClusterAnalysisTemplateResponse_Raw struct { - // raw is the raw YAML representation of the cluster analysis template. +type GetAnalysisTemplateResponse_Raw struct { + // raw is the raw YAML representation of the analysis template. Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` } -func (*GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate) isGetClusterAnalysisTemplateResponse_Result() { -} +func (*GetAnalysisTemplateResponse_AnalysisTemplate) isGetAnalysisTemplateResponse_Result() {} -func (*GetClusterAnalysisTemplateResponse_Raw) isGetClusterAnalysisTemplateResponse_Result() {} +func (*GetAnalysisTemplateResponse_Raw) isGetAnalysisTemplateResponse_Result() {} -// DeleteClusterAnalysisTemplateRequest is the request for deleting a cluster analysis template. -type DeleteClusterAnalysisTemplateRequest struct { +// DeleteAnalysisTemplateRequest is the request for deleting an analysis template. +type DeleteAnalysisTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // name is the name of the cluster analysis template to delete. + // project is the name of the project containing the analysis template. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the analysis template to delete. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DeleteClusterAnalysisTemplateRequest) Reset() { - *x = DeleteClusterAnalysisTemplateRequest{} +func (x *DeleteAnalysisTemplateRequest) Reset() { + *x = DeleteAnalysisTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[131] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteClusterAnalysisTemplateRequest) String() string { +func (x *DeleteAnalysisTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteClusterAnalysisTemplateRequest) ProtoMessage() {} +func (*DeleteAnalysisTemplateRequest) ProtoMessage() {} -func (x *DeleteClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[131] +func (x *DeleteAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7971,87 +8176,48 @@ func (x *DeleteClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use DeleteClusterAnalysisTemplateRequest.ProtoReflect.Descriptor instead. -func (*DeleteClusterAnalysisTemplateRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{131} +// Deprecated: Use DeleteAnalysisTemplateRequest.ProtoReflect.Descriptor instead. +func (*DeleteAnalysisTemplateRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{132} } -func (x *DeleteClusterAnalysisTemplateRequest) GetName() string { +func (x *DeleteAnalysisTemplateRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *DeleteAnalysisTemplateRequest) GetName() string { if x != nil { return x.Name } return "" } -// DeleteClusterAnalysisTemplateResponse is the response returned after deleting a cluster analysis template. -type DeleteClusterAnalysisTemplateResponse struct { +// DeleteAnalysisTemplateResponse is the response returned after deleting an analysis template. +type DeleteAnalysisTemplateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *DeleteClusterAnalysisTemplateResponse) Reset() { - *x = DeleteClusterAnalysisTemplateResponse{} +func (x *DeleteAnalysisTemplateResponse) Reset() { + *x = DeleteAnalysisTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[132] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteClusterAnalysisTemplateResponse) String() string { +func (x *DeleteAnalysisTemplateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteClusterAnalysisTemplateResponse) ProtoMessage() {} +func (*DeleteAnalysisTemplateResponse) ProtoMessage() {} -func (x *DeleteClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[132] - 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 DeleteClusterAnalysisTemplateResponse.ProtoReflect.Descriptor instead. -func (*DeleteClusterAnalysisTemplateResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{132} -} - -// GetAnalysisRunRequest is the request for retrieving a specific analysis run. -type GetAnalysisRunRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // namespace is the namespace containing the analysis run. - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - // name is the name of the analysis run to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the desired response format (structured object or raw YAML). - Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` -} - -func (x *GetAnalysisRunRequest) Reset() { - *x = GetAnalysisRunRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[133] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetAnalysisRunRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetAnalysisRunRequest) ProtoMessage() {} - -func (x *GetAnalysisRunRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8063,47 +8229,20 @@ func (x *GetAnalysisRunRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAnalysisRunRequest.ProtoReflect.Descriptor instead. -func (*GetAnalysisRunRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteAnalysisTemplateResponse.ProtoReflect.Descriptor instead. +func (*DeleteAnalysisTemplateResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{133} } -func (x *GetAnalysisRunRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *GetAnalysisRunRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *GetAnalysisRunRequest) GetFormat() RawFormat { - if x != nil { - return x.Format - } - return RawFormat_RAW_FORMAT_UNSPECIFIED -} - -// GetAnalysisRunResponse contains the requested analysis run information. -type GetAnalysisRunResponse struct { +// ListClusterAnalysisTemplatesRequest is the request for listing all cluster-level analysis templates. +type ListClusterAnalysisTemplatesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Types that are assignable to Result: - // - // *GetAnalysisRunResponse_AnalysisRun - // *GetAnalysisRunResponse_Raw - Result isGetAnalysisRunResponse_Result `protobuf_oneof:"result"` } -func (x *GetAnalysisRunResponse) Reset() { - *x = GetAnalysisRunResponse{} +func (x *ListClusterAnalysisTemplatesRequest) Reset() { + *x = ListClusterAnalysisTemplatesRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8111,13 +8250,13 @@ func (x *GetAnalysisRunResponse) Reset() { } } -func (x *GetAnalysisRunResponse) String() string { +func (x *ListClusterAnalysisTemplatesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAnalysisRunResponse) ProtoMessage() {} +func (*ListClusterAnalysisTemplatesRequest) ProtoMessage() {} -func (x *GetAnalysisRunResponse) ProtoReflect() protoreflect.Message { +func (x *ListClusterAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8129,68 +8268,23 @@ func (x *GetAnalysisRunResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAnalysisRunResponse.ProtoReflect.Descriptor instead. -func (*GetAnalysisRunResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListClusterAnalysisTemplatesRequest.ProtoReflect.Descriptor instead. +func (*ListClusterAnalysisTemplatesRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{134} } -func (m *GetAnalysisRunResponse) GetResult() isGetAnalysisRunResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetAnalysisRunResponse) GetAnalysisRun() *v1alpha11.AnalysisRun { - if x, ok := x.GetResult().(*GetAnalysisRunResponse_AnalysisRun); ok { - return x.AnalysisRun - } - return nil -} - -func (x *GetAnalysisRunResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetAnalysisRunResponse_Raw); ok { - return x.Raw - } - return nil -} - -type isGetAnalysisRunResponse_Result interface { - isGetAnalysisRunResponse_Result() -} - -type GetAnalysisRunResponse_AnalysisRun struct { - // analysis_run is the structured AnalysisRun resource. - AnalysisRun *v1alpha11.AnalysisRun `protobuf:"bytes,1,opt,name=analysis_run,json=analysisRun,proto3,oneof"` -} - -type GetAnalysisRunResponse_Raw struct { - // raw is the raw YAML representation of the analysis run. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` -} - -func (*GetAnalysisRunResponse_AnalysisRun) isGetAnalysisRunResponse_Result() {} - -func (*GetAnalysisRunResponse_Raw) isGetAnalysisRunResponse_Result() {} - -// GetAnalysisRunLogsRequest is the request for retrieving logs from an analysis run. -type GetAnalysisRunLogsRequest struct { +// ListClusterAnalysisTemplatesResponse contains a list of cluster-level analysis templates. +type ListClusterAnalysisTemplatesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // namespace is the namespace containing the analysis run. - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - // name is the name of the analysis run whose logs to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // metric_name is the specific metric whose logs to retrieve. - MetricName string `protobuf:"bytes,3,opt,name=metric_name,json=metricName,proto3" json:"metric_name,omitempty"` - // container_name is the specific container whose logs to retrieve. - ContainerName string `protobuf:"bytes,4,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` + // cluster_analysis_templates is the list of ClusterAnalysisTemplate resources. + ClusterAnalysisTemplates []*v1alpha11.ClusterAnalysisTemplate `protobuf:"bytes,1,rep,name=cluster_analysis_templates,json=clusteranalysisTemplates,proto3" json:"cluster_analysis_templates,omitempty"` } -func (x *GetAnalysisRunLogsRequest) Reset() { - *x = GetAnalysisRunLogsRequest{} +func (x *ListClusterAnalysisTemplatesResponse) Reset() { + *x = ListClusterAnalysisTemplatesResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8198,13 +8292,13 @@ func (x *GetAnalysisRunLogsRequest) Reset() { } } -func (x *GetAnalysisRunLogsRequest) String() string { +func (x *ListClusterAnalysisTemplatesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAnalysisRunLogsRequest) ProtoMessage() {} +func (*ListClusterAnalysisTemplatesResponse) ProtoMessage() {} -func (x *GetAnalysisRunLogsRequest) ProtoReflect() protoreflect.Message { +func (x *ListClusterAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8216,51 +8310,32 @@ func (x *GetAnalysisRunLogsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAnalysisRunLogsRequest.ProtoReflect.Descriptor instead. -func (*GetAnalysisRunLogsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListClusterAnalysisTemplatesResponse.ProtoReflect.Descriptor instead. +func (*ListClusterAnalysisTemplatesResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{135} } -func (x *GetAnalysisRunLogsRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *GetAnalysisRunLogsRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *GetAnalysisRunLogsRequest) GetMetricName() string { - if x != nil { - return x.MetricName - } - return "" -} - -func (x *GetAnalysisRunLogsRequest) GetContainerName() string { +func (x *ListClusterAnalysisTemplatesResponse) GetClusterAnalysisTemplates() []*v1alpha11.ClusterAnalysisTemplate { if x != nil { - return x.ContainerName + return x.ClusterAnalysisTemplates } - return "" + return nil } -// GetAnalysisRunLogsResponse contains a chunk of logs from the analysis run. -type GetAnalysisRunLogsResponse struct { +// GetClusterAnalysisTemplateRequest is the request for retrieving a specific cluster analysis template. +type GetClusterAnalysisTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // chunk is a portion of the log output from the analysis run. - Chunk string `protobuf:"bytes,1,opt,name=chunk,proto3" json:"chunk,omitempty"` + // name is the name of the cluster analysis template to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the desired response format (structured object or raw YAML). + Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *GetAnalysisRunLogsResponse) Reset() { - *x = GetAnalysisRunLogsResponse{} +func (x *GetClusterAnalysisTemplateRequest) Reset() { + *x = GetClusterAnalysisTemplateRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8268,13 +8343,13 @@ func (x *GetAnalysisRunLogsResponse) Reset() { } } -func (x *GetAnalysisRunLogsResponse) String() string { +func (x *GetClusterAnalysisTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAnalysisRunLogsResponse) ProtoMessage() {} +func (*GetClusterAnalysisTemplateRequest) ProtoMessage() {} -func (x *GetAnalysisRunLogsResponse) ProtoReflect() protoreflect.Message { +func (x *GetClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8286,30 +8361,40 @@ func (x *GetAnalysisRunLogsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAnalysisRunLogsResponse.ProtoReflect.Descriptor instead. -func (*GetAnalysisRunLogsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetClusterAnalysisTemplateRequest.ProtoReflect.Descriptor instead. +func (*GetClusterAnalysisTemplateRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{136} } -func (x *GetAnalysisRunLogsResponse) GetChunk() string { +func (x *GetClusterAnalysisTemplateRequest) GetName() string { if x != nil { - return x.Chunk + return x.Name } return "" } -// ListProjectEventsRequest is the request for listing events in a project. -type ListProjectEventsRequest struct { +func (x *GetClusterAnalysisTemplateRequest) GetFormat() RawFormat { + if x != nil { + return x.Format + } + return RawFormat_RAW_FORMAT_UNSPECIFIED +} + +// GetClusterAnalysisTemplateResponse contains the requested cluster analysis template information. +type GetClusterAnalysisTemplateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose events will be listed. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // Types that are assignable to Result: + // + // *GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate + // *GetClusterAnalysisTemplateResponse_Raw + Result isGetClusterAnalysisTemplateResponse_Result `protobuf_oneof:"result"` } -func (x *ListProjectEventsRequest) Reset() { - *x = ListProjectEventsRequest{} +func (x *GetClusterAnalysisTemplateResponse) Reset() { + *x = GetClusterAnalysisTemplateResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8317,13 +8402,13 @@ func (x *ListProjectEventsRequest) Reset() { } } -func (x *ListProjectEventsRequest) String() string { +func (x *GetClusterAnalysisTemplateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListProjectEventsRequest) ProtoMessage() {} +func (*GetClusterAnalysisTemplateResponse) ProtoMessage() {} -func (x *ListProjectEventsRequest) ProtoReflect() protoreflect.Message { +func (x *GetClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8335,94 +8420,78 @@ func (x *ListProjectEventsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListProjectEventsRequest.ProtoReflect.Descriptor instead. -func (*ListProjectEventsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetClusterAnalysisTemplateResponse.ProtoReflect.Descriptor instead. +func (*GetClusterAnalysisTemplateResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{137} } -func (x *ListProjectEventsRequest) GetProject() string { - if x != nil { - return x.Project +func (m *GetClusterAnalysisTemplateResponse) GetResult() isGetClusterAnalysisTemplateResponse_Result { + if m != nil { + return m.Result } - return "" + return nil } -// ListProjectEventsResponse contains a list of events for the specified project. -type ListProjectEventsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // events is the list of Kubernetes Events within the project. - Events []*v1.Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` +func (x *GetClusterAnalysisTemplateResponse) GetClusterAnalysisTemplate() *v1alpha11.ClusterAnalysisTemplate { + if x, ok := x.GetResult().(*GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate); ok { + return x.ClusterAnalysisTemplate + } + return nil } -func (x *ListProjectEventsResponse) Reset() { - *x = ListProjectEventsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[138] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *GetClusterAnalysisTemplateResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetClusterAnalysisTemplateResponse_Raw); ok { + return x.Raw } + return nil } -func (x *ListProjectEventsResponse) String() string { - return protoimpl.X.MessageStringOf(x) +type isGetClusterAnalysisTemplateResponse_Result interface { + isGetClusterAnalysisTemplateResponse_Result() } -func (*ListProjectEventsResponse) ProtoMessage() {} - -func (x *ListProjectEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[138] - 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) +type GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate struct { + // cluster_analysis_template is the structured ClusterAnalysisTemplate resource. + ClusterAnalysisTemplate *v1alpha11.ClusterAnalysisTemplate `protobuf:"bytes,1,opt,name=cluster_analysis_template,json=clusterAnalysisTemplate,proto3,oneof"` } -// Deprecated: Use ListProjectEventsResponse.ProtoReflect.Descriptor instead. -func (*ListProjectEventsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{138} +type GetClusterAnalysisTemplateResponse_Raw struct { + // raw is the raw YAML representation of the cluster analysis template. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` } -func (x *ListProjectEventsResponse) GetEvents() []*v1.Event { - if x != nil { - return x.Events - } - return nil +func (*GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate) isGetClusterAnalysisTemplateResponse_Result() { } -// ListPromotionTasksRequest is the request for listing promotion tasks in a project. -type ListPromotionTasksRequest struct { +func (*GetClusterAnalysisTemplateResponse_Raw) isGetClusterAnalysisTemplateResponse_Result() {} + +// DeleteClusterAnalysisTemplateRequest is the request for deleting a cluster analysis template. +type DeleteClusterAnalysisTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose promotion tasks will be listed. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the cluster analysis template to delete. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListPromotionTasksRequest) Reset() { - *x = ListPromotionTasksRequest{} +func (x *DeleteClusterAnalysisTemplateRequest) Reset() { + *x = DeleteClusterAnalysisTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[139] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListPromotionTasksRequest) String() string { +func (x *DeleteClusterAnalysisTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPromotionTasksRequest) ProtoMessage() {} +func (*DeleteClusterAnalysisTemplateRequest) ProtoMessage() {} -func (x *ListPromotionTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[139] +func (x *DeleteClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8433,45 +8502,42 @@ func (x *ListPromotionTasksRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPromotionTasksRequest.ProtoReflect.Descriptor instead. -func (*ListPromotionTasksRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{139} +// Deprecated: Use DeleteClusterAnalysisTemplateRequest.ProtoReflect.Descriptor instead. +func (*DeleteClusterAnalysisTemplateRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{138} } -func (x *ListPromotionTasksRequest) GetProject() string { +func (x *DeleteClusterAnalysisTemplateRequest) GetName() string { if x != nil { - return x.Project + return x.Name } return "" } -// ListPromotionTasksResponse contains a list of promotion tasks for the specified project. -type ListPromotionTasksResponse struct { +// DeleteClusterAnalysisTemplateResponse is the response returned after deleting a cluster analysis template. +type DeleteClusterAnalysisTemplateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // promotion_tasks is the list of PromotionTask resources within the project. - PromotionTasks []*v1alpha1.PromotionTask `protobuf:"bytes,1,rep,name=promotion_tasks,json=promotionTasks,proto3" json:"promotion_tasks,omitempty"` } -func (x *ListPromotionTasksResponse) Reset() { - *x = ListPromotionTasksResponse{} +func (x *DeleteClusterAnalysisTemplateResponse) Reset() { + *x = DeleteClusterAnalysisTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[140] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListPromotionTasksResponse) String() string { +func (x *DeleteClusterAnalysisTemplateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPromotionTasksResponse) ProtoMessage() {} +func (*DeleteClusterAnalysisTemplateResponse) ProtoMessage() {} -func (x *ListPromotionTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[140] +func (x *DeleteClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8482,49 +8548,42 @@ func (x *ListPromotionTasksResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPromotionTasksResponse.ProtoReflect.Descriptor instead. -func (*ListPromotionTasksResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{140} -} - -func (x *ListPromotionTasksResponse) GetPromotionTasks() []*v1alpha1.PromotionTask { - if x != nil { - return x.PromotionTasks - } - return nil +// Deprecated: Use DeleteClusterAnalysisTemplateResponse.ProtoReflect.Descriptor instead. +func (*DeleteClusterAnalysisTemplateResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{139} } -// GetPromotionTaskRequest is the request for retrieving a specific promotion task. -type GetPromotionTaskRequest struct { +// GetAnalysisRunRequest is the request for retrieving a specific analysis run. +type GetAnalysisRunRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the promotion task. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the promotion task to retrieve. + // namespace is the namespace containing the analysis run. + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + // name is the name of the analysis run to retrieve. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // format specifies the desired response format (structured object or raw YAML). Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *GetPromotionTaskRequest) Reset() { - *x = GetPromotionTaskRequest{} +func (x *GetAnalysisRunRequest) Reset() { + *x = GetAnalysisRunRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[141] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetPromotionTaskRequest) String() string { +func (x *GetAnalysisRunRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPromotionTaskRequest) ProtoMessage() {} +func (*GetAnalysisRunRequest) ProtoMessage() {} -func (x *GetPromotionTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[141] +func (x *GetAnalysisRunRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8535,62 +8594,62 @@ func (x *GetPromotionTaskRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPromotionTaskRequest.ProtoReflect.Descriptor instead. -func (*GetPromotionTaskRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{141} +// Deprecated: Use GetAnalysisRunRequest.ProtoReflect.Descriptor instead. +func (*GetAnalysisRunRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{140} } -func (x *GetPromotionTaskRequest) GetProject() string { +func (x *GetAnalysisRunRequest) GetNamespace() string { if x != nil { - return x.Project + return x.Namespace } return "" } -func (x *GetPromotionTaskRequest) GetName() string { +func (x *GetAnalysisRunRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *GetPromotionTaskRequest) GetFormat() RawFormat { +func (x *GetAnalysisRunRequest) GetFormat() RawFormat { if x != nil { return x.Format } return RawFormat_RAW_FORMAT_UNSPECIFIED } -// GetPromotionTaskResponse contains the requested promotion task information. -type GetPromotionTaskResponse struct { +// GetAnalysisRunResponse contains the requested analysis run information. +type GetAnalysisRunResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Result: // - // *GetPromotionTaskResponse_PromotionTask - // *GetPromotionTaskResponse_Raw - Result isGetPromotionTaskResponse_Result `protobuf_oneof:"result"` + // *GetAnalysisRunResponse_AnalysisRun + // *GetAnalysisRunResponse_Raw + Result isGetAnalysisRunResponse_Result `protobuf_oneof:"result"` } -func (x *GetPromotionTaskResponse) Reset() { - *x = GetPromotionTaskResponse{} +func (x *GetAnalysisRunResponse) Reset() { + *x = GetAnalysisRunResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[142] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetPromotionTaskResponse) String() string { +func (x *GetAnalysisRunResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPromotionTaskResponse) ProtoMessage() {} +func (*GetAnalysisRunResponse) ProtoMessage() {} -func (x *GetPromotionTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[142] +func (x *GetAnalysisRunResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8601,74 +8660,83 @@ func (x *GetPromotionTaskResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPromotionTaskResponse.ProtoReflect.Descriptor instead. -func (*GetPromotionTaskResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{142} +// Deprecated: Use GetAnalysisRunResponse.ProtoReflect.Descriptor instead. +func (*GetAnalysisRunResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{141} } -func (m *GetPromotionTaskResponse) GetResult() isGetPromotionTaskResponse_Result { +func (m *GetAnalysisRunResponse) GetResult() isGetAnalysisRunResponse_Result { if m != nil { return m.Result } return nil } -func (x *GetPromotionTaskResponse) GetPromotionTask() *v1alpha1.PromotionTask { - if x, ok := x.GetResult().(*GetPromotionTaskResponse_PromotionTask); ok { - return x.PromotionTask +func (x *GetAnalysisRunResponse) GetAnalysisRun() *v1alpha11.AnalysisRun { + if x, ok := x.GetResult().(*GetAnalysisRunResponse_AnalysisRun); ok { + return x.AnalysisRun } return nil } -func (x *GetPromotionTaskResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetPromotionTaskResponse_Raw); ok { +func (x *GetAnalysisRunResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetAnalysisRunResponse_Raw); ok { return x.Raw } return nil } -type isGetPromotionTaskResponse_Result interface { - isGetPromotionTaskResponse_Result() +type isGetAnalysisRunResponse_Result interface { + isGetAnalysisRunResponse_Result() } -type GetPromotionTaskResponse_PromotionTask struct { - // promotion_task is the structured PromotionTask resource. - PromotionTask *v1alpha1.PromotionTask `protobuf:"bytes,1,opt,name=promotion_task,json=promotionTask,proto3,oneof"` +type GetAnalysisRunResponse_AnalysisRun struct { + // analysis_run is the structured AnalysisRun resource. + AnalysisRun *v1alpha11.AnalysisRun `protobuf:"bytes,1,opt,name=analysis_run,json=analysisRun,proto3,oneof"` } -type GetPromotionTaskResponse_Raw struct { - // raw is the raw YAML representation of the promotion task. +type GetAnalysisRunResponse_Raw struct { + // raw is the raw YAML representation of the analysis run. Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` } -func (*GetPromotionTaskResponse_PromotionTask) isGetPromotionTaskResponse_Result() {} +func (*GetAnalysisRunResponse_AnalysisRun) isGetAnalysisRunResponse_Result() {} -func (*GetPromotionTaskResponse_Raw) isGetPromotionTaskResponse_Result() {} +func (*GetAnalysisRunResponse_Raw) isGetAnalysisRunResponse_Result() {} -// ListClusterPromotionTasksRequest is the request for listing all cluster-level promotion tasks. -type ListClusterPromotionTasksRequest struct { +// GetAnalysisRunLogsRequest is the request for retrieving logs from an analysis run. +type GetAnalysisRunLogsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // namespace is the namespace containing the analysis run. + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + // name is the name of the analysis run whose logs to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // metric_name is the specific metric whose logs to retrieve. + MetricName string `protobuf:"bytes,3,opt,name=metric_name,json=metricName,proto3" json:"metric_name,omitempty"` + // container_name is the specific container whose logs to retrieve. + ContainerName string `protobuf:"bytes,4,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` } -func (x *ListClusterPromotionTasksRequest) Reset() { - *x = ListClusterPromotionTasksRequest{} +func (x *GetAnalysisRunLogsRequest) Reset() { + *x = GetAnalysisRunLogsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[143] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListClusterPromotionTasksRequest) String() string { +func (x *GetAnalysisRunLogsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListClusterPromotionTasksRequest) ProtoMessage() {} +func (*GetAnalysisRunLogsRequest) ProtoMessage() {} -func (x *ListClusterPromotionTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[143] +func (x *GetAnalysisRunLogsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8679,38 +8747,66 @@ func (x *ListClusterPromotionTasksRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListClusterPromotionTasksRequest.ProtoReflect.Descriptor instead. -func (*ListClusterPromotionTasksRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{143} +// Deprecated: Use GetAnalysisRunLogsRequest.ProtoReflect.Descriptor instead. +func (*GetAnalysisRunLogsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{142} } -// ListClusterPromotionTasksResponse contains a list of cluster-level promotion tasks. -type ListClusterPromotionTasksResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *GetAnalysisRunLogsRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} - // cluster_promotion_tasks is the list of ClusterPromotionTask resources. - ClusterPromotionTasks []*v1alpha1.ClusterPromotionTask `protobuf:"bytes,1,rep,name=cluster_promotion_tasks,json=clusterPromotionTasks,proto3" json:"cluster_promotion_tasks,omitempty"` +func (x *GetAnalysisRunLogsRequest) GetName() string { + if x != nil { + return x.Name + } + return "" } -func (x *ListClusterPromotionTasksResponse) Reset() { - *x = ListClusterPromotionTasksResponse{} +func (x *GetAnalysisRunLogsRequest) GetMetricName() string { + if x != nil { + return x.MetricName + } + return "" +} + +func (x *GetAnalysisRunLogsRequest) GetContainerName() string { + if x != nil { + return x.ContainerName + } + return "" +} + +// GetAnalysisRunLogsResponse contains a chunk of logs from the analysis run. +type GetAnalysisRunLogsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // chunk is a portion of the log output from the analysis run. + Chunk string `protobuf:"bytes,1,opt,name=chunk,proto3" json:"chunk,omitempty"` +} + +func (x *GetAnalysisRunLogsResponse) Reset() { + *x = GetAnalysisRunLogsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[144] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListClusterPromotionTasksResponse) String() string { +func (x *GetAnalysisRunLogsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListClusterPromotionTasksResponse) ProtoMessage() {} +func (*GetAnalysisRunLogsResponse) ProtoMessage() {} -func (x *ListClusterPromotionTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[144] +func (x *GetAnalysisRunLogsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8721,47 +8817,45 @@ func (x *ListClusterPromotionTasksResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ListClusterPromotionTasksResponse.ProtoReflect.Descriptor instead. -func (*ListClusterPromotionTasksResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{144} +// Deprecated: Use GetAnalysisRunLogsResponse.ProtoReflect.Descriptor instead. +func (*GetAnalysisRunLogsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{143} } -func (x *ListClusterPromotionTasksResponse) GetClusterPromotionTasks() []*v1alpha1.ClusterPromotionTask { +func (x *GetAnalysisRunLogsResponse) GetChunk() string { if x != nil { - return x.ClusterPromotionTasks + return x.Chunk } - return nil + return "" } -// GetClusterPromotionTaskRequest is the request for retrieving a specific cluster promotion task. -type GetClusterPromotionTaskRequest struct { +// ListProjectEventsRequest is the request for listing events in a project. +type ListProjectEventsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // name is the name of the cluster promotion task to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the desired response format (structured object or raw YAML). - Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` + // project is the name of the project whose events will be listed. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *GetClusterPromotionTaskRequest) Reset() { - *x = GetClusterPromotionTaskRequest{} +func (x *ListProjectEventsRequest) Reset() { + *x = ListProjectEventsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[145] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetClusterPromotionTaskRequest) String() string { +func (x *ListProjectEventsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClusterPromotionTaskRequest) ProtoMessage() {} +func (*ListProjectEventsRequest) ProtoMessage() {} -func (x *GetClusterPromotionTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[145] +func (x *ListProjectEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8772,55 +8866,45 @@ func (x *GetClusterPromotionTaskRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetClusterPromotionTaskRequest.ProtoReflect.Descriptor instead. -func (*GetClusterPromotionTaskRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{145} +// Deprecated: Use ListProjectEventsRequest.ProtoReflect.Descriptor instead. +func (*ListProjectEventsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{144} } -func (x *GetClusterPromotionTaskRequest) GetName() string { +func (x *ListProjectEventsRequest) GetProject() string { if x != nil { - return x.Name + return x.Project } return "" } -func (x *GetClusterPromotionTaskRequest) GetFormat() RawFormat { - if x != nil { - return x.Format - } - return RawFormat_RAW_FORMAT_UNSPECIFIED -} - -// GetClusterPromotionTaskResponse contains the requested cluster promotion task information. -type GetClusterPromotionTaskResponse struct { +// ListProjectEventsResponse contains a list of events for the specified project. +type ListProjectEventsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Result: - // - // *GetClusterPromotionTaskResponse_PromotionTask - // *GetClusterPromotionTaskResponse_Raw - Result isGetClusterPromotionTaskResponse_Result `protobuf_oneof:"result"` + // events is the list of Kubernetes Events within the project. + Events []*v11.Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` } -func (x *GetClusterPromotionTaskResponse) Reset() { - *x = GetClusterPromotionTaskResponse{} +func (x *ListProjectEventsResponse) Reset() { + *x = ListProjectEventsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[146] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetClusterPromotionTaskResponse) String() string { +func (x *ListProjectEventsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClusterPromotionTaskResponse) ProtoMessage() {} +func (*ListProjectEventsResponse) ProtoMessage() {} -func (x *GetClusterPromotionTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[146] +func (x *ListProjectEventsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8831,63 +8915,79 @@ func (x *GetClusterPromotionTaskResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetClusterPromotionTaskResponse.ProtoReflect.Descriptor instead. -func (*GetClusterPromotionTaskResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{146} +// Deprecated: Use ListProjectEventsResponse.ProtoReflect.Descriptor instead. +func (*ListProjectEventsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{145} } -func (m *GetClusterPromotionTaskResponse) GetResult() isGetClusterPromotionTaskResponse_Result { - if m != nil { - return m.Result +func (x *ListProjectEventsResponse) GetEvents() []*v11.Event { + if x != nil { + return x.Events } return nil } -func (x *GetClusterPromotionTaskResponse) GetPromotionTask() *v1alpha1.ClusterPromotionTask { - if x, ok := x.GetResult().(*GetClusterPromotionTaskResponse_PromotionTask); ok { - return x.PromotionTask - } - return nil +// ListPromotionTasksRequest is the request for listing promotion tasks in a project. +type ListPromotionTasksRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // project is the name of the project whose promotion tasks will be listed. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *GetClusterPromotionTaskResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetClusterPromotionTaskResponse_Raw); ok { - return x.Raw +func (x *ListPromotionTasksRequest) Reset() { + *x = ListPromotionTasksRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[146] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -type isGetClusterPromotionTaskResponse_Result interface { - isGetClusterPromotionTaskResponse_Result() +func (x *ListPromotionTasksRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -type GetClusterPromotionTaskResponse_PromotionTask struct { - // promotion_task is the structured ClusterPromotionTask resource. - PromotionTask *v1alpha1.ClusterPromotionTask `protobuf:"bytes,1,opt,name=promotion_task,json=clusterPromotionTask,proto3,oneof"` -} +func (*ListPromotionTasksRequest) ProtoMessage() {} -type GetClusterPromotionTaskResponse_Raw struct { - // raw is the raw YAML representation of the cluster promotion task. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +func (x *ListPromotionTasksRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[146] + 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) } -func (*GetClusterPromotionTaskResponse_PromotionTask) isGetClusterPromotionTaskResponse_Result() {} +// Deprecated: Use ListPromotionTasksRequest.ProtoReflect.Descriptor instead. +func (*ListPromotionTasksRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{146} +} -func (*GetClusterPromotionTaskResponse_Raw) isGetClusterPromotionTaskResponse_Result() {} +func (x *ListPromotionTasksRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} -// CreateRoleRequest is a request to create a new Kargo Role virtual resource by -// creating its underlying Kubernetes resources. -type CreateRoleRequest struct { +// ListPromotionTasksResponse contains a list of promotion tasks for the specified project. +type ListPromotionTasksResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // role is the Kargo Role virtual resource to create. - Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + // promotion_tasks is the list of PromotionTask resources within the project. + PromotionTasks []*v1alpha1.PromotionTask `protobuf:"bytes,1,rep,name=promotion_tasks,json=promotionTasks,proto3" json:"promotion_tasks,omitempty"` } -func (x *CreateRoleRequest) Reset() { - *x = CreateRoleRequest{} +func (x *ListPromotionTasksResponse) Reset() { + *x = ListPromotionTasksResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8895,13 +8995,13 @@ func (x *CreateRoleRequest) Reset() { } } -func (x *CreateRoleRequest) String() string { +func (x *ListPromotionTasksResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateRoleRequest) ProtoMessage() {} +func (*ListPromotionTasksResponse) ProtoMessage() {} -func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message { +func (x *ListPromotionTasksResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8913,31 +9013,34 @@ func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateRoleRequest.ProtoReflect.Descriptor instead. -func (*CreateRoleRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPromotionTasksResponse.ProtoReflect.Descriptor instead. +func (*ListPromotionTasksResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{147} } -func (x *CreateRoleRequest) GetRole() *v1alpha12.Role { +func (x *ListPromotionTasksResponse) GetPromotionTasks() []*v1alpha1.PromotionTask { if x != nil { - return x.Role + return x.PromotionTasks } return nil } -// CreateRoleResponse contains the details of a newly created Kargo Role virtual -// resource. -type CreateRoleResponse struct { +// GetPromotionTaskRequest is the request for retrieving a specific promotion task. +type GetPromotionTaskRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // role is the newly created Kargo Role virtual resource. - Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + // project is the name of the project containing the promotion task. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the promotion task to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the desired response format (structured object or raw YAML). + Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *CreateRoleResponse) Reset() { - *x = CreateRoleResponse{} +func (x *GetPromotionTaskRequest) Reset() { + *x = GetPromotionTaskRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8945,13 +9048,13 @@ func (x *CreateRoleResponse) Reset() { } } -func (x *CreateRoleResponse) String() string { +func (x *GetPromotionTaskRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateRoleResponse) ProtoMessage() {} +func (*GetPromotionTaskRequest) ProtoMessage() {} -func (x *CreateRoleResponse) ProtoReflect() protoreflect.Message { +func (x *GetPromotionTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8963,33 +9066,47 @@ func (x *CreateRoleResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateRoleResponse.ProtoReflect.Descriptor instead. -func (*CreateRoleResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPromotionTaskRequest.ProtoReflect.Descriptor instead. +func (*GetPromotionTaskRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{148} } -func (x *CreateRoleResponse) GetRole() *v1alpha12.Role { +func (x *GetPromotionTaskRequest) GetProject() string { if x != nil { - return x.Role + return x.Project } - return nil + return "" } -// DeleteRoleRequest is a request to delete a Kargo Role virtual resource by -// deleting its underlying Kubernetes resources. -type DeleteRoleRequest struct { +func (x *GetPromotionTaskRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetPromotionTaskRequest) GetFormat() RawFormat { + if x != nil { + return x.Format + } + return RawFormat_RAW_FORMAT_UNSPECIFIED +} + +// GetPromotionTaskResponse contains the requested promotion task information. +type GetPromotionTaskResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the Kargo Role to be deleted. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the Kargo Role to deleted. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // Types that are assignable to Result: + // + // *GetPromotionTaskResponse_PromotionTask + // *GetPromotionTaskResponse_Raw + Result isGetPromotionTaskResponse_Result `protobuf_oneof:"result"` } -func (x *DeleteRoleRequest) Reset() { - *x = DeleteRoleRequest{} +func (x *GetPromotionTaskResponse) Reset() { + *x = GetPromotionTaskResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8997,13 +9114,13 @@ func (x *DeleteRoleRequest) Reset() { } } -func (x *DeleteRoleRequest) String() string { +func (x *GetPromotionTaskResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteRoleRequest) ProtoMessage() {} +func (*GetPromotionTaskResponse) ProtoMessage() {} -func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message { +func (x *GetPromotionTaskResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9015,35 +9132,59 @@ func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteRoleRequest.ProtoReflect.Descriptor instead. -func (*DeleteRoleRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPromotionTaskResponse.ProtoReflect.Descriptor instead. +func (*GetPromotionTaskResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{149} } -func (x *DeleteRoleRequest) GetProject() string { - if x != nil { - return x.Project +func (m *GetPromotionTaskResponse) GetResult() isGetPromotionTaskResponse_Result { + if m != nil { + return m.Result } - return "" + return nil } -func (x *DeleteRoleRequest) GetName() string { - if x != nil { - return x.Name +func (x *GetPromotionTaskResponse) GetPromotionTask() *v1alpha1.PromotionTask { + if x, ok := x.GetResult().(*GetPromotionTaskResponse_PromotionTask); ok { + return x.PromotionTask } - return "" + return nil } -// DeleteRoleResponse is the response returned after deleting a Kargo Role -// virtual resource. -type DeleteRoleResponse struct { +func (x *GetPromotionTaskResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetPromotionTaskResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetPromotionTaskResponse_Result interface { + isGetPromotionTaskResponse_Result() +} + +type GetPromotionTaskResponse_PromotionTask struct { + // promotion_task is the structured PromotionTask resource. + PromotionTask *v1alpha1.PromotionTask `protobuf:"bytes,1,opt,name=promotion_task,json=promotionTask,proto3,oneof"` +} + +type GetPromotionTaskResponse_Raw struct { + // raw is the raw YAML representation of the promotion task. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetPromotionTaskResponse_PromotionTask) isGetPromotionTaskResponse_Result() {} + +func (*GetPromotionTaskResponse_Raw) isGetPromotionTaskResponse_Result() {} + +// ListClusterPromotionTasksRequest is the request for listing all cluster-level promotion tasks. +type ListClusterPromotionTasksRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *DeleteRoleResponse) Reset() { - *x = DeleteRoleResponse{} +func (x *ListClusterPromotionTasksRequest) Reset() { + *x = ListClusterPromotionTasksRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9051,13 +9192,13 @@ func (x *DeleteRoleResponse) Reset() { } } -func (x *DeleteRoleResponse) String() string { +func (x *ListClusterPromotionTasksRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteRoleResponse) ProtoMessage() {} +func (*ListClusterPromotionTasksRequest) ProtoMessage() {} -func (x *DeleteRoleResponse) ProtoReflect() protoreflect.Message { +func (x *ListClusterPromotionTasksRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9069,36 +9210,23 @@ func (x *DeleteRoleResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteRoleResponse.ProtoReflect.Descriptor instead. -func (*DeleteRoleResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListClusterPromotionTasksRequest.ProtoReflect.Descriptor instead. +func (*ListClusterPromotionTasksRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{150} } -// GetRoleRequest is a request to retrieve the details of a Kargo Role virtual -// resource or its underlying Kubernetes resources. -type GetRoleRequest struct { +// ListClusterPromotionTasksResponse contains a list of cluster-level promotion tasks. +type ListClusterPromotionTasksResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to retrieve a system-level - // role instead of a project-level one. - SystemLevel bool `protobuf:"varint,5,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project containing the Kargo Role to be - // retrieved. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the Kargo Role to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // as_resources indicates whether to return the Kargo Role's underlying - // Kubernetes resources instead of the Kargo Role virtual resource. - AsResources bool `protobuf:"varint,3,opt,name=as_resources,json=asResources,proto3" json:"as_resources,omitempty"` - // format specifies the desired response format (structured object or raw - // YAML or JSON). - Format RawFormat `protobuf:"varint,4,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` + // cluster_promotion_tasks is the list of ClusterPromotionTask resources. + ClusterPromotionTasks []*v1alpha1.ClusterPromotionTask `protobuf:"bytes,1,rep,name=cluster_promotion_tasks,json=clusterPromotionTasks,proto3" json:"cluster_promotion_tasks,omitempty"` } -func (x *GetRoleRequest) Reset() { - *x = GetRoleRequest{} +func (x *ListClusterPromotionTasksResponse) Reset() { + *x = ListClusterPromotionTasksResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9106,13 +9234,13 @@ func (x *GetRoleRequest) Reset() { } } -func (x *GetRoleRequest) String() string { +func (x *ListClusterPromotionTasksResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetRoleRequest) ProtoMessage() {} +func (*ListClusterPromotionTasksResponse) ProtoMessage() {} -func (x *GetRoleRequest) ProtoReflect() protoreflect.Message { +func (x *ListClusterPromotionTasksResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9124,78 +9252,106 @@ func (x *GetRoleRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetRoleRequest.ProtoReflect.Descriptor instead. -func (*GetRoleRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListClusterPromotionTasksResponse.ProtoReflect.Descriptor instead. +func (*ListClusterPromotionTasksResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{151} } -func (x *GetRoleRequest) GetSystemLevel() bool { +func (x *ListClusterPromotionTasksResponse) GetClusterPromotionTasks() []*v1alpha1.ClusterPromotionTask { if x != nil { - return x.SystemLevel + return x.ClusterPromotionTasks } - return false + return nil } -func (x *GetRoleRequest) GetProject() string { - if x != nil { - return x.Project +// GetClusterPromotionTaskRequest is the request for retrieving a specific cluster promotion task. +type GetClusterPromotionTaskRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name is the name of the cluster promotion task to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the desired response format (structured object or raw YAML). + Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` +} + +func (x *GetClusterPromotionTaskRequest) Reset() { + *x = GetClusterPromotionTaskRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[152] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *GetRoleRequest) GetName() string { - if x != nil { - return x.Name +func (x *GetClusterPromotionTaskRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetClusterPromotionTaskRequest) ProtoMessage() {} + +func (x *GetClusterPromotionTaskRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[152] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *GetRoleRequest) GetAsResources() bool { +// Deprecated: Use GetClusterPromotionTaskRequest.ProtoReflect.Descriptor instead. +func (*GetClusterPromotionTaskRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{152} +} + +func (x *GetClusterPromotionTaskRequest) GetName() string { if x != nil { - return x.AsResources + return x.Name } - return false + return "" } -func (x *GetRoleRequest) GetFormat() RawFormat { +func (x *GetClusterPromotionTaskRequest) GetFormat() RawFormat { if x != nil { return x.Format } return RawFormat_RAW_FORMAT_UNSPECIFIED } -// GetRoleResponse contains the details of a Kargo Role virtual resource or its -// underlying Kubernetes resources. -type GetRoleResponse struct { +// GetClusterPromotionTaskResponse contains the requested cluster promotion task information. +type GetClusterPromotionTaskResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Result: // - // *GetRoleResponse_Role - // *GetRoleResponse_Resources - // *GetRoleResponse_Raw - Result isGetRoleResponse_Result `protobuf_oneof:"result"` + // *GetClusterPromotionTaskResponse_PromotionTask + // *GetClusterPromotionTaskResponse_Raw + Result isGetClusterPromotionTaskResponse_Result `protobuf_oneof:"result"` } -func (x *GetRoleResponse) Reset() { - *x = GetRoleResponse{} +func (x *GetClusterPromotionTaskResponse) Reset() { + *x = GetClusterPromotionTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[152] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetRoleResponse) String() string { +func (x *GetClusterPromotionTaskResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetRoleResponse) ProtoMessage() {} +func (*GetClusterPromotionTaskResponse) ProtoMessage() {} -func (x *GetRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[152] +func (x *GetClusterPromotionTaskResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9206,137 +9362,63 @@ func (x *GetRoleResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetRoleResponse.ProtoReflect.Descriptor instead. -func (*GetRoleResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{152} +// Deprecated: Use GetClusterPromotionTaskResponse.ProtoReflect.Descriptor instead. +func (*GetClusterPromotionTaskResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{153} } -func (m *GetRoleResponse) GetResult() isGetRoleResponse_Result { +func (m *GetClusterPromotionTaskResponse) GetResult() isGetClusterPromotionTaskResponse_Result { if m != nil { return m.Result } return nil } -func (x *GetRoleResponse) GetRole() *v1alpha12.Role { - if x, ok := x.GetResult().(*GetRoleResponse_Role); ok { - return x.Role +func (x *GetClusterPromotionTaskResponse) GetPromotionTask() *v1alpha1.ClusterPromotionTask { + if x, ok := x.GetResult().(*GetClusterPromotionTaskResponse_PromotionTask); ok { + return x.PromotionTask } return nil } -func (x *GetRoleResponse) GetResources() *v1alpha12.RoleResources { - if x, ok := x.GetResult().(*GetRoleResponse_Resources); ok { - return x.Resources +func (x *GetClusterPromotionTaskResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetClusterPromotionTaskResponse_Raw); ok { + return x.Raw } return nil } -func (x *GetRoleResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetRoleResponse_Raw); ok { - return x.Raw - } - return nil +type isGetClusterPromotionTaskResponse_Result interface { + isGetClusterPromotionTaskResponse_Result() } -type isGetRoleResponse_Result interface { - isGetRoleResponse_Result() +type GetClusterPromotionTaskResponse_PromotionTask struct { + // promotion_task is the structured ClusterPromotionTask resource. + PromotionTask *v1alpha1.ClusterPromotionTask `protobuf:"bytes,1,opt,name=promotion_task,json=clusterPromotionTask,proto3,oneof"` } -type GetRoleResponse_Role struct { - // role is a structured Kargo Role virtual resource. - Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3,oneof"` -} - -type GetRoleResponse_Resources struct { - // resources is a structured RoleResources object encapsulating the Kargo - // Role's underlying Kubernetes resources. - Resources *v1alpha12.RoleResources `protobuf:"bytes,2,opt,name=resources,proto3,oneof"` -} - -type GetRoleResponse_Raw struct { - // raw is a raw YAML or JSON representation of the requested resource(s). - Raw []byte `protobuf:"bytes,3,opt,name=raw,proto3,oneof"` -} - -func (*GetRoleResponse_Role) isGetRoleResponse_Result() {} - -func (*GetRoleResponse_Resources) isGetRoleResponse_Result() {} - -func (*GetRoleResponse_Raw) isGetRoleResponse_Result() {} - -// Claims represents a collection of OIDC claims. -type Claims struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Note: oneof and repeated do not work together - // claims is a list of OIDC claims. - Claims []*v1alpha12.Claim `protobuf:"bytes,1,rep,name=claims,proto3" json:"claims,omitempty"` -} - -func (x *Claims) Reset() { - *x = Claims{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[153] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Claims) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Claims) ProtoMessage() {} - -func (x *Claims) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[153] - 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) +type GetClusterPromotionTaskResponse_Raw struct { + // raw is the raw YAML representation of the cluster promotion task. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` } -// Deprecated: Use Claims.ProtoReflect.Descriptor instead. -func (*Claims) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{153} -} +func (*GetClusterPromotionTaskResponse_PromotionTask) isGetClusterPromotionTaskResponse_Result() {} -func (x *Claims) GetClaims() []*v1alpha12.Claim { - if x != nil { - return x.Claims - } - return nil -} +func (*GetClusterPromotionTaskResponse_Raw) isGetClusterPromotionTaskResponse_Result() {} -// GrantRequest is a request to assign permissions to a Kargo Role virtual -// resource or to bind users having specific ODIC claims to a Kargo Role virtual -// resource. -type GrantRequest struct { +// CreateRoleRequest is a request to create a new Kargo Role virtual resource by +// creating its underlying Kubernetes resources. +type CreateRoleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the Kargo Role that is the - // subject of the grant. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // role is the name of the Kargo Role that is the subject of the grant. - Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` - // Types that are assignable to Request: - // - // *GrantRequest_UserClaims - // *GrantRequest_ResourceDetails - Request isGrantRequest_Request `protobuf_oneof:"request"` + // role is the Kargo Role virtual resource to create. + Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` } -func (x *GrantRequest) Reset() { - *x = GrantRequest{} +func (x *CreateRoleRequest) Reset() { + *x = CreateRoleRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9344,13 +9426,13 @@ func (x *GrantRequest) Reset() { } } -func (x *GrantRequest) String() string { +func (x *CreateRoleRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GrantRequest) ProtoMessage() {} +func (*CreateRoleRequest) ProtoMessage() {} -func (x *GrantRequest) ProtoReflect() protoreflect.Message { +func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9362,78 +9444,31 @@ func (x *GrantRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GrantRequest.ProtoReflect.Descriptor instead. -func (*GrantRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateRoleRequest.ProtoReflect.Descriptor instead. +func (*CreateRoleRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{154} } -func (x *GrantRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *GrantRequest) GetRole() string { +func (x *CreateRoleRequest) GetRole() *v1alpha12.Role { if x != nil { return x.Role } - return "" -} - -func (m *GrantRequest) GetRequest() isGrantRequest_Request { - if m != nil { - return m.Request - } - return nil -} - -func (x *GrantRequest) GetUserClaims() *Claims { - if x, ok := x.GetRequest().(*GrantRequest_UserClaims); ok { - return x.UserClaims - } return nil } -func (x *GrantRequest) GetResourceDetails() *v1alpha12.ResourceDetails { - if x, ok := x.GetRequest().(*GrantRequest_ResourceDetails); ok { - return x.ResourceDetails - } - return nil -} - -type isGrantRequest_Request interface { - isGrantRequest_Request() -} - -type GrantRequest_UserClaims struct { - // user_claims are OIDC claims to which the Kargo Role should be mapped. - UserClaims *Claims `protobuf:"bytes,3,opt,name=user_claims,json=userClaims,proto3,oneof"` -} - -type GrantRequest_ResourceDetails struct { - // resource_details are the details of permissions to be granted to the - // Kargo Role. - ResourceDetails *v1alpha12.ResourceDetails `protobuf:"bytes,4,opt,name=resource_details,json=resourceDetails,proto3,oneof"` -} - -func (*GrantRequest_UserClaims) isGrantRequest_Request() {} - -func (*GrantRequest_ResourceDetails) isGrantRequest_Request() {} - -// GrantResponse contains the details of a Kargo Role virtual resource after a -// new grant. -type GrantResponse struct { +// CreateRoleResponse contains the details of a newly created Kargo Role virtual +// resource. +type CreateRoleResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // role is the Kargo Role that was the subject of the grant. + // role is the newly created Kargo Role virtual resource. Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` } -func (x *GrantResponse) Reset() { - *x = GrantResponse{} +func (x *CreateRoleResponse) Reset() { + *x = CreateRoleResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9441,13 +9476,13 @@ func (x *GrantResponse) Reset() { } } -func (x *GrantResponse) String() string { +func (x *CreateRoleResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GrantResponse) ProtoMessage() {} +func (*CreateRoleResponse) ProtoMessage() {} -func (x *GrantResponse) ProtoReflect() protoreflect.Message { +func (x *CreateRoleResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9459,37 +9494,33 @@ func (x *GrantResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GrantResponse.ProtoReflect.Descriptor instead. -func (*GrantResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateRoleResponse.ProtoReflect.Descriptor instead. +func (*CreateRoleResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{155} } -func (x *GrantResponse) GetRole() *v1alpha12.Role { +func (x *CreateRoleResponse) GetRole() *v1alpha12.Role { if x != nil { return x.Role } return nil } -// ListRolesRequests is a request to retrieve the details of all Kargo Role -// virtual resources or their underlying Kubernetes resources. -type ListRolesRequest struct { +// DeleteRoleRequest is a request to delete a Kargo Role virtual resource by +// deleting its underlying Kubernetes resources. +type DeleteRoleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to list system-level roles - // instead of project-level roles. - SystemLevel bool `protobuf:"varint,3,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project for which to list all Kargo Roles. + // project is the name of the project containing the Kargo Role to be deleted. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // as_resources indicates whether to return each Kargo Role's underlying - // Kubernetes resources instead of the Kargo Role virtual resource(s). - AsResources bool `protobuf:"varint,2,opt,name=as_resources,json=asResources,proto3" json:"as_resources,omitempty"` + // name is the name of the Kargo Role to deleted. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListRolesRequest) Reset() { - *x = ListRolesRequest{} +func (x *DeleteRoleRequest) Reset() { + *x = DeleteRoleRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9497,13 +9528,13 @@ func (x *ListRolesRequest) Reset() { } } -func (x *ListRolesRequest) String() string { +func (x *DeleteRoleRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListRolesRequest) ProtoMessage() {} +func (*DeleteRoleRequest) ProtoMessage() {} -func (x *ListRolesRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9515,49 +9546,35 @@ func (x *ListRolesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListRolesRequest.ProtoReflect.Descriptor instead. -func (*ListRolesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteRoleRequest.ProtoReflect.Descriptor instead. +func (*DeleteRoleRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{156} } -func (x *ListRolesRequest) GetSystemLevel() bool { - if x != nil { - return x.SystemLevel - } - return false -} - -func (x *ListRolesRequest) GetProject() string { +func (x *DeleteRoleRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *ListRolesRequest) GetAsResources() bool { +func (x *DeleteRoleRequest) GetName() string { if x != nil { - return x.AsResources + return x.Name } - return false + return "" } -// ListRolesResponse contains a list of Kargo Role virtual resources or their -// underlying Kubernetes resources. -type ListRolesResponse struct { +// DeleteRoleResponse is the response returned after deleting a Kargo Role +// virtual resource. +type DeleteRoleResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Note: oneof and repeated do not work together - // roles is a list of Kargo Role virtual resources. - Roles []*v1alpha12.Role `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty"` - // resources is a list of RoleResource objects encapsulating the Kargo Roles' - // underlying Kubernetes resources. - Resources []*v1alpha12.RoleResources `protobuf:"bytes,2,rep,name=resources,proto3" json:"resources,omitempty"` } -func (x *ListRolesResponse) Reset() { - *x = ListRolesResponse{} +func (x *DeleteRoleResponse) Reset() { + *x = DeleteRoleResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9565,13 +9582,13 @@ func (x *ListRolesResponse) Reset() { } } -func (x *ListRolesResponse) String() string { +func (x *DeleteRoleResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListRolesResponse) ProtoMessage() {} +func (*DeleteRoleResponse) ProtoMessage() {} -func (x *ListRolesResponse) ProtoReflect() protoreflect.Message { +func (x *DeleteRoleResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9583,47 +9600,36 @@ func (x *ListRolesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListRolesResponse.ProtoReflect.Descriptor instead. -func (*ListRolesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteRoleResponse.ProtoReflect.Descriptor instead. +func (*DeleteRoleResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{157} } -func (x *ListRolesResponse) GetRoles() []*v1alpha12.Role { - if x != nil { - return x.Roles - } - return nil -} - -func (x *ListRolesResponse) GetResources() []*v1alpha12.RoleResources { - if x != nil { - return x.Resources - } - return nil -} - -// RevokeRequest is a request to remove permissions from a Kargo Role virtual -// resource or to unbind users having specific OIDC claims from a Kargo Role -// virtual resource. -type RevokeRequest struct { +// GetRoleRequest is a request to retrieve the details of a Kargo Role virtual +// resource or its underlying Kubernetes resources. +type GetRoleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the Kargo Role that is the - // subject of the revocation. + // system_level indicates whether the request is to retrieve a system-level + // role instead of a project-level one. + SystemLevel bool `protobuf:"varint,5,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project containing the Kargo Role to be + // retrieved. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // role is the name of the Kargo Role that is the subject of the revocation. - Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` - // Types that are assignable to Request: - // - // *RevokeRequest_UserClaims - // *RevokeRequest_ResourceDetails - Request isRevokeRequest_Request `protobuf_oneof:"request"` + // name is the name of the Kargo Role to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // as_resources indicates whether to return the Kargo Role's underlying + // Kubernetes resources instead of the Kargo Role virtual resource. + AsResources bool `protobuf:"varint,3,opt,name=as_resources,json=asResources,proto3" json:"as_resources,omitempty"` + // format specifies the desired response format (structured object or raw + // YAML or JSON). + Format RawFormat `protobuf:"varint,4,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *RevokeRequest) Reset() { - *x = RevokeRequest{} +func (x *GetRoleRequest) Reset() { + *x = GetRoleRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9631,13 +9637,13 @@ func (x *RevokeRequest) Reset() { } } -func (x *RevokeRequest) String() string { +func (x *GetRoleRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RevokeRequest) ProtoMessage() {} +func (*GetRoleRequest) ProtoMessage() {} -func (x *RevokeRequest) ProtoReflect() protoreflect.Message { +func (x *GetRoleRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9649,80 +9655,63 @@ func (x *RevokeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RevokeRequest.ProtoReflect.Descriptor instead. -func (*RevokeRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetRoleRequest.ProtoReflect.Descriptor instead. +func (*GetRoleRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{158} } -func (x *RevokeRequest) GetProject() string { +func (x *GetRoleRequest) GetSystemLevel() bool { if x != nil { - return x.Project + return x.SystemLevel } - return "" + return false } -func (x *RevokeRequest) GetRole() string { +func (x *GetRoleRequest) GetProject() string { if x != nil { - return x.Role + return x.Project } return "" } -func (m *RevokeRequest) GetRequest() isRevokeRequest_Request { - if m != nil { - return m.Request +func (x *GetRoleRequest) GetName() string { + if x != nil { + return x.Name } - return nil + return "" } -func (x *RevokeRequest) GetUserClaims() *Claims { - if x, ok := x.GetRequest().(*RevokeRequest_UserClaims); ok { - return x.UserClaims +func (x *GetRoleRequest) GetAsResources() bool { + if x != nil { + return x.AsResources } - return nil + return false } -func (x *RevokeRequest) GetResourceDetails() *v1alpha12.ResourceDetails { - if x, ok := x.GetRequest().(*RevokeRequest_ResourceDetails); ok { - return x.ResourceDetails +func (x *GetRoleRequest) GetFormat() RawFormat { + if x != nil { + return x.Format } - return nil -} - -type isRevokeRequest_Request interface { - isRevokeRequest_Request() -} - -type RevokeRequest_UserClaims struct { - // user_claims are OIDC claims from which the Kargo Role virtual resource - // will be unmapped. - UserClaims *Claims `protobuf:"bytes,3,opt,name=user_claims,json=userClaims,proto3,oneof"` -} - -type RevokeRequest_ResourceDetails struct { - // resource_details are the details of permissions to be revoked from the - // Kargo Role. - ResourceDetails *v1alpha12.ResourceDetails `protobuf:"bytes,4,opt,name=resource_details,json=resourceDetails,proto3,oneof"` + return RawFormat_RAW_FORMAT_UNSPECIFIED } -func (*RevokeRequest_UserClaims) isRevokeRequest_Request() {} - -func (*RevokeRequest_ResourceDetails) isRevokeRequest_Request() {} - -// RevokeResponse contains the details of a Kargo Role virtual resource after a -// revocation. -type RevokeResponse struct { +// GetRoleResponse contains the details of a Kargo Role virtual resource or its +// underlying Kubernetes resources. +type GetRoleResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // role is the Kargo Role virtual resource that was the subject of the - // revocation. - Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + // Types that are assignable to Result: + // + // *GetRoleResponse_Role + // *GetRoleResponse_Resources + // *GetRoleResponse_Raw + Result isGetRoleResponse_Result `protobuf_oneof:"result"` } -func (x *RevokeResponse) Reset() { - *x = RevokeResponse{} +func (x *GetRoleResponse) Reset() { + *x = GetRoleResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9730,13 +9719,13 @@ func (x *RevokeResponse) Reset() { } } -func (x *RevokeResponse) String() string { +func (x *GetRoleResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RevokeResponse) ProtoMessage() {} +func (*GetRoleResponse) ProtoMessage() {} -func (x *RevokeResponse) ProtoReflect() protoreflect.Message { +func (x *GetRoleResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9748,31 +9737,78 @@ func (x *RevokeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RevokeResponse.ProtoReflect.Descriptor instead. -func (*RevokeResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetRoleResponse.ProtoReflect.Descriptor instead. +func (*GetRoleResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{159} } -func (x *RevokeResponse) GetRole() *v1alpha12.Role { - if x != nil { +func (m *GetRoleResponse) GetResult() isGetRoleResponse_Result { + if m != nil { + return m.Result + } + return nil +} + +func (x *GetRoleResponse) GetRole() *v1alpha12.Role { + if x, ok := x.GetResult().(*GetRoleResponse_Role); ok { return x.Role } return nil } -// UpdateRoleRequest is a request to modify an existing Kargo Role virtual -// resource by updating its underlying Kubernetes resources. -type UpdateRoleRequest struct { +func (x *GetRoleResponse) GetResources() *v1alpha12.RoleResources { + if x, ok := x.GetResult().(*GetRoleResponse_Resources); ok { + return x.Resources + } + return nil +} + +func (x *GetRoleResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetRoleResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetRoleResponse_Result interface { + isGetRoleResponse_Result() +} + +type GetRoleResponse_Role struct { + // role is a structured Kargo Role virtual resource. + Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3,oneof"` +} + +type GetRoleResponse_Resources struct { + // resources is a structured RoleResources object encapsulating the Kargo + // Role's underlying Kubernetes resources. + Resources *v1alpha12.RoleResources `protobuf:"bytes,2,opt,name=resources,proto3,oneof"` +} + +type GetRoleResponse_Raw struct { + // raw is a raw YAML or JSON representation of the requested resource(s). + Raw []byte `protobuf:"bytes,3,opt,name=raw,proto3,oneof"` +} + +func (*GetRoleResponse_Role) isGetRoleResponse_Result() {} + +func (*GetRoleResponse_Resources) isGetRoleResponse_Result() {} + +func (*GetRoleResponse_Raw) isGetRoleResponse_Result() {} + +// Claims represents a collection of OIDC claims. +type Claims struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // role is the Kargo Role virtual resource to update. - Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + // Note: oneof and repeated do not work together + // claims is a list of OIDC claims. + Claims []*v1alpha12.Claim `protobuf:"bytes,1,rep,name=claims,proto3" json:"claims,omitempty"` } -func (x *UpdateRoleRequest) Reset() { - *x = UpdateRoleRequest{} +func (x *Claims) Reset() { + *x = Claims{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9780,13 +9816,13 @@ func (x *UpdateRoleRequest) Reset() { } } -func (x *UpdateRoleRequest) String() string { +func (x *Claims) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateRoleRequest) ProtoMessage() {} +func (*Claims) ProtoMessage() {} -func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message { +func (x *Claims) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9798,31 +9834,40 @@ func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateRoleRequest.ProtoReflect.Descriptor instead. -func (*UpdateRoleRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use Claims.ProtoReflect.Descriptor instead. +func (*Claims) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{160} } -func (x *UpdateRoleRequest) GetRole() *v1alpha12.Role { +func (x *Claims) GetClaims() []*v1alpha12.Claim { if x != nil { - return x.Role + return x.Claims } return nil } -// UpdateRoleResponse contains the details of the updated Kargo Role virtual +// GrantRequest is a request to assign permissions to a Kargo Role virtual +// resource or to bind users having specific ODIC claims to a Kargo Role virtual // resource. -type UpdateRoleResponse struct { +type GrantRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // role is the updated Kargo Role virtual resource. - Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + // project is the name of the project containing the Kargo Role that is the + // subject of the grant. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // role is the name of the Kargo Role that is the subject of the grant. + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + // Types that are assignable to Request: + // + // *GrantRequest_UserClaims + // *GrantRequest_ResourceDetails + Request isGrantRequest_Request `protobuf_oneof:"request"` } -func (x *UpdateRoleResponse) Reset() { - *x = UpdateRoleResponse{} +func (x *GrantRequest) Reset() { + *x = GrantRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9830,13 +9875,13 @@ func (x *UpdateRoleResponse) Reset() { } } -func (x *UpdateRoleResponse) String() string { +func (x *GrantRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateRoleResponse) ProtoMessage() {} +func (*GrantRequest) ProtoMessage() {} -func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message { +func (x *GrantRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9848,42 +9893,78 @@ func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateRoleResponse.ProtoReflect.Descriptor instead. -func (*UpdateRoleResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GrantRequest.ProtoReflect.Descriptor instead. +func (*GrantRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{161} } -func (x *UpdateRoleResponse) GetRole() *v1alpha12.Role { +func (x *GrantRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *GrantRequest) GetRole() string { if x != nil { return x.Role } - return nil + return "" } -// CreateAPITokenRequest is a request to generate a new bearer token associated -// with a specified Kargo Role virtual resource. -type CreateAPITokenRequest struct { +func (m *GrantRequest) GetRequest() isGrantRequest_Request { + if m != nil { + return m.Request + } + return nil +} + +func (x *GrantRequest) GetUserClaims() *Claims { + if x, ok := x.GetRequest().(*GrantRequest_UserClaims); ok { + return x.UserClaims + } + return nil +} + +func (x *GrantRequest) GetResourceDetails() *v1alpha12.ResourceDetails { + if x, ok := x.GetRequest().(*GrantRequest_ResourceDetails); ok { + return x.ResourceDetails + } + return nil +} + +type isGrantRequest_Request interface { + isGrantRequest_Request() +} + +type GrantRequest_UserClaims struct { + // user_claims are OIDC claims to which the Kargo Role should be mapped. + UserClaims *Claims `protobuf:"bytes,3,opt,name=user_claims,json=userClaims,proto3,oneof"` +} + +type GrantRequest_ResourceDetails struct { + // resource_details are the details of permissions to be granted to the + // Kargo Role. + ResourceDetails *v1alpha12.ResourceDetails `protobuf:"bytes,4,opt,name=resource_details,json=resourceDetails,proto3,oneof"` +} + +func (*GrantRequest_UserClaims) isGrantRequest_Request() {} + +func (*GrantRequest_ResourceDetails) isGrantRequest_Request() {} + +// GrantResponse contains the details of a Kargo Role virtual resource after a +// new grant. +type GrantResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to create a token associated - // with a system-level Kargo Role virtual resource instead of one at the - // project-level. - SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project containing the Kargo Role virtual - // resource for which a new token is being created. This value is ignored if - // system_level is true. - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - // role_name is the name of the Kargo Role virtual resource for which to - // generate a new bearer token. - RoleName string `protobuf:"bytes,3,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` - // name is the name for the bearer token to be created. - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + // role is the Kargo Role that was the subject of the grant. + Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` } -func (x *CreateAPITokenRequest) Reset() { - *x = CreateAPITokenRequest{} +func (x *GrantResponse) Reset() { + *x = GrantResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9891,13 +9972,13 @@ func (x *CreateAPITokenRequest) Reset() { } } -func (x *CreateAPITokenRequest) String() string { +func (x *GrantResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateAPITokenRequest) ProtoMessage() {} +func (*GrantResponse) ProtoMessage() {} -func (x *CreateAPITokenRequest) ProtoReflect() protoreflect.Message { +func (x *GrantResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9909,52 +9990,37 @@ func (x *CreateAPITokenRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateAPITokenRequest.ProtoReflect.Descriptor instead. -func (*CreateAPITokenRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GrantResponse.ProtoReflect.Descriptor instead. +func (*GrantResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{162} } -func (x *CreateAPITokenRequest) GetSystemLevel() bool { - if x != nil { - return x.SystemLevel - } - return false -} - -func (x *CreateAPITokenRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *CreateAPITokenRequest) GetRoleName() string { - if x != nil { - return x.RoleName - } - return "" -} - -func (x *CreateAPITokenRequest) GetName() string { +func (x *GrantResponse) GetRole() *v1alpha12.Role { if x != nil { - return x.Name + return x.Role } - return "" + return nil } -// CreateAPITokenResponse contains a newly generated bearer token in the form of -// a Kubernetes Secret. -type CreateAPITokenResponse struct { +// ListRolesRequests is a request to retrieve the details of all Kargo Role +// virtual resources or their underlying Kubernetes resources. +type ListRolesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // token_secret is a Kubernetes Secret containing the token. - TokenSecret *v1.Secret `protobuf:"bytes,1,opt,name=token_secret,json=tokenSecret,proto3" json:"token_secret,omitempty"` + // system_level indicates whether the request is to list system-level roles + // instead of project-level roles. + SystemLevel bool `protobuf:"varint,3,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project for which to list all Kargo Roles. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // as_resources indicates whether to return each Kargo Role's underlying + // Kubernetes resources instead of the Kargo Role virtual resource(s). + AsResources bool `protobuf:"varint,2,opt,name=as_resources,json=asResources,proto3" json:"as_resources,omitempty"` } -func (x *CreateAPITokenResponse) Reset() { - *x = CreateAPITokenResponse{} +func (x *ListRolesRequest) Reset() { + *x = ListRolesRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9962,13 +10028,13 @@ func (x *CreateAPITokenResponse) Reset() { } } -func (x *CreateAPITokenResponse) String() string { +func (x *ListRolesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateAPITokenResponse) ProtoMessage() {} +func (*ListRolesRequest) ProtoMessage() {} -func (x *CreateAPITokenResponse) ProtoReflect() protoreflect.Message { +func (x *ListRolesRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9980,38 +10046,49 @@ func (x *CreateAPITokenResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateAPITokenResponse.ProtoReflect.Descriptor instead. -func (*CreateAPITokenResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListRolesRequest.ProtoReflect.Descriptor instead. +func (*ListRolesRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{163} } -func (x *CreateAPITokenResponse) GetTokenSecret() *v1.Secret { +func (x *ListRolesRequest) GetSystemLevel() bool { if x != nil { - return x.TokenSecret + return x.SystemLevel } - return nil + return false } -// DeleteAPITokenRequest is a request to delete a bearer token associated with a -// Kargo Role virtual resource. -type DeleteAPITokenRequest struct { +func (x *ListRolesRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *ListRolesRequest) GetAsResources() bool { + if x != nil { + return x.AsResources + } + return false +} + +// ListRolesResponse contains a list of Kargo Role virtual resources or their +// underlying Kubernetes resources. +type ListRolesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to delete a token associated - // with a system-level Kargo Role virtual resource instead of one at the - // project-level. - SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project containing the token that is to be - // deleted. This value is ignored if system_level is true. - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the token to delete. - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // Note: oneof and repeated do not work together + // roles is a list of Kargo Role virtual resources. + Roles []*v1alpha12.Role `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty"` + // resources is a list of RoleResource objects encapsulating the Kargo Roles' + // underlying Kubernetes resources. + Resources []*v1alpha12.RoleResources `protobuf:"bytes,2,rep,name=resources,proto3" json:"resources,omitempty"` } -func (x *DeleteAPITokenRequest) Reset() { - *x = DeleteAPITokenRequest{} +func (x *ListRolesResponse) Reset() { + *x = ListRolesResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10019,13 +10096,13 @@ func (x *DeleteAPITokenRequest) Reset() { } } -func (x *DeleteAPITokenRequest) String() string { +func (x *ListRolesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteAPITokenRequest) ProtoMessage() {} +func (*ListRolesResponse) ProtoMessage() {} -func (x *DeleteAPITokenRequest) ProtoReflect() protoreflect.Message { +func (x *ListRolesResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10037,42 +10114,47 @@ func (x *DeleteAPITokenRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteAPITokenRequest.ProtoReflect.Descriptor instead. -func (*DeleteAPITokenRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListRolesResponse.ProtoReflect.Descriptor instead. +func (*ListRolesResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{164} } -func (x *DeleteAPITokenRequest) GetSystemLevel() bool { - if x != nil { - return x.SystemLevel - } - return false -} - -func (x *DeleteAPITokenRequest) GetProject() string { +func (x *ListRolesResponse) GetRoles() []*v1alpha12.Role { if x != nil { - return x.Project + return x.Roles } - return "" + return nil } -func (x *DeleteAPITokenRequest) GetName() string { +func (x *ListRolesResponse) GetResources() []*v1alpha12.RoleResources { if x != nil { - return x.Name + return x.Resources } - return "" + return nil } -// DeleteAPITokenResponse is the response returned after deleting a bearer token -// associated with a Kargo Role virtual resource. -type DeleteAPITokenResponse struct { +// RevokeRequest is a request to remove permissions from a Kargo Role virtual +// resource or to unbind users having specific OIDC claims from a Kargo Role +// virtual resource. +type RevokeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // project is the name of the project containing the Kargo Role that is the + // subject of the revocation. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // role is the name of the Kargo Role that is the subject of the revocation. + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + // Types that are assignable to Request: + // + // *RevokeRequest_UserClaims + // *RevokeRequest_ResourceDetails + Request isRevokeRequest_Request `protobuf_oneof:"request"` } -func (x *DeleteAPITokenResponse) Reset() { - *x = DeleteAPITokenResponse{} +func (x *RevokeRequest) Reset() { + *x = RevokeRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10080,13 +10162,13 @@ func (x *DeleteAPITokenResponse) Reset() { } } -func (x *DeleteAPITokenResponse) String() string { +func (x *RevokeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteAPITokenResponse) ProtoMessage() {} +func (*RevokeRequest) ProtoMessage() {} -func (x *DeleteAPITokenResponse) ProtoReflect() protoreflect.Message { +func (x *RevokeRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10098,33 +10180,80 @@ func (x *DeleteAPITokenResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteAPITokenResponse.ProtoReflect.Descriptor instead. -func (*DeleteAPITokenResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RevokeRequest.ProtoReflect.Descriptor instead. +func (*RevokeRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{165} } -// GetAPITokenRequest is a request to retrieve details of a bearer token -// associated with a Kargo Role virtual resource. -type GetAPITokenRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *RevokeRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} - // system_level indicates whether the request is for a token associated with a - // system-level Kargo Role virtual resource instead of one at the - // project-level. - SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project containing the requested token. This - // value is ignored if system_level is true. - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the token to retrieve. - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the format for raw resource representation. - Format RawFormat `protobuf:"varint,4,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` +func (x *RevokeRequest) GetRole() string { + if x != nil { + return x.Role + } + return "" } -func (x *GetAPITokenRequest) Reset() { - *x = GetAPITokenRequest{} +func (m *RevokeRequest) GetRequest() isRevokeRequest_Request { + if m != nil { + return m.Request + } + return nil +} + +func (x *RevokeRequest) GetUserClaims() *Claims { + if x, ok := x.GetRequest().(*RevokeRequest_UserClaims); ok { + return x.UserClaims + } + return nil +} + +func (x *RevokeRequest) GetResourceDetails() *v1alpha12.ResourceDetails { + if x, ok := x.GetRequest().(*RevokeRequest_ResourceDetails); ok { + return x.ResourceDetails + } + return nil +} + +type isRevokeRequest_Request interface { + isRevokeRequest_Request() +} + +type RevokeRequest_UserClaims struct { + // user_claims are OIDC claims from which the Kargo Role virtual resource + // will be unmapped. + UserClaims *Claims `protobuf:"bytes,3,opt,name=user_claims,json=userClaims,proto3,oneof"` +} + +type RevokeRequest_ResourceDetails struct { + // resource_details are the details of permissions to be revoked from the + // Kargo Role. + ResourceDetails *v1alpha12.ResourceDetails `protobuf:"bytes,4,opt,name=resource_details,json=resourceDetails,proto3,oneof"` +} + +func (*RevokeRequest_UserClaims) isRevokeRequest_Request() {} + +func (*RevokeRequest_ResourceDetails) isRevokeRequest_Request() {} + +// RevokeResponse contains the details of a Kargo Role virtual resource after a +// revocation. +type RevokeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // role is the Kargo Role virtual resource that was the subject of the + // revocation. + Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` +} + +func (x *RevokeResponse) Reset() { + *x = RevokeResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10132,13 +10261,13 @@ func (x *GetAPITokenRequest) Reset() { } } -func (x *GetAPITokenRequest) String() string { +func (x *RevokeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAPITokenRequest) ProtoMessage() {} +func (*RevokeResponse) ProtoMessage() {} -func (x *GetAPITokenRequest) ProtoReflect() protoreflect.Message { +func (x *RevokeResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10150,55 +10279,31 @@ func (x *GetAPITokenRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAPITokenRequest.ProtoReflect.Descriptor instead. -func (*GetAPITokenRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use RevokeResponse.ProtoReflect.Descriptor instead. +func (*RevokeResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{166} } -func (x *GetAPITokenRequest) GetSystemLevel() bool { - if x != nil { - return x.SystemLevel - } - return false -} - -func (x *GetAPITokenRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *GetAPITokenRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *GetAPITokenRequest) GetFormat() RawFormat { +func (x *RevokeResponse) GetRole() *v1alpha12.Role { if x != nil { - return x.Format + return x.Role } - return RawFormat_RAW_FORMAT_UNSPECIFIED + return nil } -// GetAPITokenResponse contains contains the details of a bearer token -// associated with a Kargo Role virtual resource. -type GetAPITokenResponse struct { +// UpdateRoleRequest is a request to modify an existing Kargo Role virtual +// resource by updating its underlying Kubernetes resources. +type UpdateRoleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Result: - // - // *GetAPITokenResponse_TokenSecret - // *GetAPITokenResponse_Raw - Result isGetAPITokenResponse_Result `protobuf_oneof:"result"` + // role is the Kargo Role virtual resource to update. + Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` } -func (x *GetAPITokenResponse) Reset() { - *x = GetAPITokenResponse{} +func (x *UpdateRoleRequest) Reset() { + *x = UpdateRoleRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10206,13 +10311,13 @@ func (x *GetAPITokenResponse) Reset() { } } -func (x *GetAPITokenResponse) String() string { +func (x *UpdateRoleRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAPITokenResponse) ProtoMessage() {} +func (*UpdateRoleRequest) ProtoMessage() {} -func (x *GetAPITokenResponse) ProtoReflect() protoreflect.Message { +func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10224,70 +10329,31 @@ func (x *GetAPITokenResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAPITokenResponse.ProtoReflect.Descriptor instead. -func (*GetAPITokenResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateRoleRequest.ProtoReflect.Descriptor instead. +func (*UpdateRoleRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{167} } -func (m *GetAPITokenResponse) GetResult() isGetAPITokenResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetAPITokenResponse) GetTokenSecret() *v1.Secret { - if x, ok := x.GetResult().(*GetAPITokenResponse_TokenSecret); ok { - return x.TokenSecret - } - return nil -} - -func (x *GetAPITokenResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetAPITokenResponse_Raw); ok { - return x.Raw +func (x *UpdateRoleRequest) GetRole() *v1alpha12.Role { + if x != nil { + return x.Role } return nil } -type isGetAPITokenResponse_Result interface { - isGetAPITokenResponse_Result() -} - -type GetAPITokenResponse_TokenSecret struct { - // token_secret is a Kubernetes Secrets containing a redacted token - // associated with a Kargo Role virtual resource. - TokenSecret *v1.Secret `protobuf:"bytes,1,opt,name=token_secret,json=tokenSecret,proto3,oneof"` -} - -type GetAPITokenResponse_Raw struct { - // raw is a raw YAML or JSON representation of the requested resource. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` -} - -func (*GetAPITokenResponse_TokenSecret) isGetAPITokenResponse_Result() {} - -func (*GetAPITokenResponse_Raw) isGetAPITokenResponse_Result() {} - -// ListAPITokensRequest is a request to list bearer tokens associated with a -// specified Kargo Role virtual resource. -type ListAPITokensRequest struct { +// UpdateRoleResponse contains the details of the updated Kargo Role virtual +// resource. +type UpdateRoleResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether to list tokens associated with system-level - // Kargo Role virtual resources instead of ones at the project-level. - SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project containing the tokens. - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - // role_name is the name of the Kargo Role virtual resource for which to list - // associated tokens. - RoleName string `protobuf:"bytes,3,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + // role is the updated Kargo Role virtual resource. + Role *v1alpha12.Role `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` } -func (x *ListAPITokensRequest) Reset() { - *x = ListAPITokensRequest{} +func (x *UpdateRoleResponse) Reset() { + *x = UpdateRoleResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10295,13 +10361,13 @@ func (x *ListAPITokensRequest) Reset() { } } -func (x *ListAPITokensRequest) String() string { +func (x *UpdateRoleResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAPITokensRequest) ProtoMessage() {} +func (*UpdateRoleResponse) ProtoMessage() {} -func (x *ListAPITokensRequest) ProtoReflect() protoreflect.Message { +func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10313,46 +10379,42 @@ func (x *ListAPITokensRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAPITokensRequest.ProtoReflect.Descriptor instead. -func (*ListAPITokensRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateRoleResponse.ProtoReflect.Descriptor instead. +func (*UpdateRoleResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{168} } -func (x *ListAPITokensRequest) GetSystemLevel() bool { - if x != nil { - return x.SystemLevel - } - return false -} - -func (x *ListAPITokensRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *ListAPITokensRequest) GetRoleName() string { +func (x *UpdateRoleResponse) GetRole() *v1alpha12.Role { if x != nil { - return x.RoleName + return x.Role } - return "" + return nil } -// ListAPITokensResponse contains a list of bearer tokens associated with a -// specified Kargo Role virtual resource. -type ListAPITokensResponse struct { +// CreateAPITokenRequest is a request to generate a new bearer token associated +// with a specified Kargo Role virtual resource. +type CreateAPITokenRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // token_secrets is the list of Kubernetes Secrets containing redacted tokens - // associated with a Kargo Role virtual resource. - TokenSecrets []*v1.Secret `protobuf:"bytes,1,rep,name=token_secrets,json=tokenSecrets,proto3" json:"token_secrets,omitempty"` + // system_level indicates whether the request is to create a token associated + // with a system-level Kargo Role virtual resource instead of one at the + // project-level. + SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project containing the Kargo Role virtual + // resource for which a new token is being created. This value is ignored if + // system_level is true. + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + // role_name is the name of the Kargo Role virtual resource for which to + // generate a new bearer token. + RoleName string `protobuf:"bytes,3,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` + // name is the name for the bearer token to be created. + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListAPITokensResponse) Reset() { - *x = ListAPITokensResponse{} +func (x *CreateAPITokenRequest) Reset() { + *x = CreateAPITokenRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10360,13 +10422,13 @@ func (x *ListAPITokensResponse) Reset() { } } -func (x *ListAPITokensResponse) String() string { +func (x *CreateAPITokenRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAPITokensResponse) ProtoMessage() {} +func (*CreateAPITokenRequest) ProtoMessage() {} -func (x *ListAPITokensResponse) ProtoReflect() protoreflect.Message { +func (x *CreateAPITokenRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10378,36 +10440,52 @@ func (x *ListAPITokensResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAPITokensResponse.ProtoReflect.Descriptor instead. -func (*ListAPITokensResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateAPITokenRequest.ProtoReflect.Descriptor instead. +func (*CreateAPITokenRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{169} } -func (x *ListAPITokensResponse) GetTokenSecrets() []*v1.Secret { +func (x *CreateAPITokenRequest) GetSystemLevel() bool { if x != nil { - return x.TokenSecrets + return x.SystemLevel } - return nil + return false } -type RefreshResourceRequest struct { +func (x *CreateAPITokenRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *CreateAPITokenRequest) GetRoleName() string { + if x != nil { + return x.RoleName + } + return "" +} + +func (x *CreateAPITokenRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// CreateAPITokenResponse contains a newly generated bearer token in the form of +// a Kubernetes Secret. +type CreateAPITokenResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the object to refresh. - // leave blank if refreshing a cluster-config. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the object to refresh. - // leave blank if refreshing a project or cluster config. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // resource_type is the kind of resource to refresh. - // should be one of: ProjectConfig, ClusterConfig, Warehouse, or Stage. - ResourceType string `protobuf:"bytes,3,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"` + // token_secret is a Kubernetes Secret containing the token. + TokenSecret *v11.Secret `protobuf:"bytes,1,opt,name=token_secret,json=tokenSecret,proto3" json:"token_secret,omitempty"` } -func (x *RefreshResourceRequest) Reset() { - *x = RefreshResourceRequest{} +func (x *CreateAPITokenResponse) Reset() { + *x = CreateAPITokenResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10415,13 +10493,13 @@ func (x *RefreshResourceRequest) Reset() { } } -func (x *RefreshResourceRequest) String() string { +func (x *CreateAPITokenResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RefreshResourceRequest) ProtoMessage() {} +func (*CreateAPITokenResponse) ProtoMessage() {} -func (x *RefreshResourceRequest) ProtoReflect() protoreflect.Message { +func (x *CreateAPITokenResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[170] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10433,57 +10511,166 @@ func (x *RefreshResourceRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RefreshResourceRequest.ProtoReflect.Descriptor instead. -func (*RefreshResourceRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateAPITokenResponse.ProtoReflect.Descriptor instead. +func (*CreateAPITokenResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{170} } -func (x *RefreshResourceRequest) GetProject() string { +func (x *CreateAPITokenResponse) GetTokenSecret() *v11.Secret { + if x != nil { + return x.TokenSecret + } + return nil +} + +// DeleteAPITokenRequest is a request to delete a bearer token associated with a +// Kargo Role virtual resource. +type DeleteAPITokenRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // system_level indicates whether the request is to delete a token associated + // with a system-level Kargo Role virtual resource instead of one at the + // project-level. + SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project containing the token that is to be + // deleted. This value is ignored if system_level is true. + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the token to delete. + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *DeleteAPITokenRequest) Reset() { + *x = DeleteAPITokenRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[171] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteAPITokenRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteAPITokenRequest) ProtoMessage() {} + +func (x *DeleteAPITokenRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[171] + 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 DeleteAPITokenRequest.ProtoReflect.Descriptor instead. +func (*DeleteAPITokenRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{171} +} + +func (x *DeleteAPITokenRequest) GetSystemLevel() bool { + if x != nil { + return x.SystemLevel + } + return false +} + +func (x *DeleteAPITokenRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *RefreshResourceRequest) GetName() string { +func (x *DeleteAPITokenRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *RefreshResourceRequest) GetResourceType() string { - if x != nil { - return x.ResourceType +// DeleteAPITokenResponse is the response returned after deleting a bearer token +// associated with a Kargo Role virtual resource. +type DeleteAPITokenResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteAPITokenResponse) Reset() { + *x = DeleteAPITokenResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[172] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -type RefreshResourceResponse struct { +func (x *DeleteAPITokenResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteAPITokenResponse) ProtoMessage() {} + +func (x *DeleteAPITokenResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[172] + 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 DeleteAPITokenResponse.ProtoReflect.Descriptor instead. +func (*DeleteAPITokenResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{172} +} + +// GetAPITokenRequest is a request to retrieve details of a bearer token +// associated with a Kargo Role virtual resource. +type GetAPITokenRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Resource *anypb.Any `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` + // system_level indicates whether the request is for a token associated with a + // system-level Kargo Role virtual resource instead of one at the + // project-level. + SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project containing the requested token. This + // value is ignored if system_level is true. + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the token to retrieve. + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the format for raw resource representation. + Format RawFormat `protobuf:"varint,4,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *RefreshResourceResponse) Reset() { - *x = RefreshResourceResponse{} +func (x *GetAPITokenRequest) Reset() { + *x = GetAPITokenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[171] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RefreshResourceResponse) String() string { +func (x *GetAPITokenRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RefreshResourceResponse) ProtoMessage() {} +func (*GetAPITokenRequest) ProtoMessage() {} -func (x *RefreshResourceResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[171] +func (x *GetAPITokenRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[173] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10494,836 +10681,1269 @@ func (x *RefreshResourceResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RefreshResourceResponse.ProtoReflect.Descriptor instead. -func (*RefreshResourceResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{171} +// Deprecated: Use GetAPITokenRequest.ProtoReflect.Descriptor instead. +func (*GetAPITokenRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{173} } -func (x *RefreshResourceResponse) GetResource() *anypb.Any { +func (x *GetAPITokenRequest) GetSystemLevel() bool { if x != nil { - return x.Resource + return x.SystemLevel } - return nil + return false } -var File_api_service_v1alpha1_service_proto protoreflect.FileDescriptor +func (x *GetAPITokenRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} -var file_api_service_v1alpha1_service_proto_rawDesc = []byte{ - 0x0a, 0x22, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x61, 0x70, 0x69, 0x2f, 0x73, - 0x74, 0x75, 0x62, 0x73, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2f, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x62, 0x61, 0x63, - 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb8, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x06, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x03, 0x63, 0x6c, 0x69, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x66, 0x6f, 0x48, 0x01, 0x52, 0x03, 0x63, 0x6c, 0x69, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x63, 0x6c, 0x69, 0x22, - 0xfe, 0x01, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, - 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, - 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x67, 0x69, 0x74, 0x5f, - 0x74, 0x72, 0x65, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0c, 0x67, 0x69, 0x74, 0x54, 0x72, 0x65, 0x65, 0x44, 0x69, 0x72, 0x74, 0x79, 0x12, 0x39, - 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, - 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, - 0x69, 0x6c, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, - 0x69, 0x6c, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3d, 0x0a, 0x0b, 0x41, 0x72, 0x67, - 0x6f, 0x43, 0x44, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xb4, 0x03, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, - 0x0a, 0x0d, 0x61, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x72, 0x67, 0x6f, 0x63, - 0x64, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x61, 0x72, - 0x67, 0x6f, 0x63, 0x64, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x1a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x22, 0x68, 0x61, 0x73, 0x5f, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x75, 0x72, - 0x6c, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x1d, 0x68, 0x61, 0x73, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, - 0x4c, 0x6f, 0x67, 0x73, 0x55, 0x72, 0x6c, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, - 0x6e, 0x0a, 0x11, 0x41, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x53, 0x68, 0x61, 0x72, 0x64, 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, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x72, 0x67, 0x6f, 0x43, 0x44, 0x53, - 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb9, 0x01, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0b, 0x6f, 0x69, 0x64, 0x63, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x49, - 0x44, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, 0x69, 0x64, 0x63, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6b, 0x69, 0x70, - 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x6b, 0x69, - 0x70, 0x41, 0x75, 0x74, 0x68, 0x22, 0x84, 0x01, 0x0a, 0x0a, 0x4f, 0x49, 0x44, 0x43, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, - 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x5f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x63, 0x6c, 0x69, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x11, - 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x2f, 0x0a, - 0x12, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x33, - 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, - 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, - 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, - 0x52, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3b, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, - 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, - 0x66, 0x65, 0x73, 0x74, 0x22, 0xbc, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, - 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, - 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, - 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x7a, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, - 0x33, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, - 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, - 0x66, 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, - 0x00, 0x52, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x6a, 0x0a, 0x16, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x33, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, - 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, - 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x50, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x22, 0x2d, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x22, 0x59, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x11, 0x4c, - 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x4c, - 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x58, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x63, 0x0a, 0x0b, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, - 0x61, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xba, 0x01, 0x0a, 0x06, 0x54, 0x61, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x46, 0x0a, 0x04, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x67, - 0x4d, 0x61, 0x70, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, - 0x61, 0x67, 0x73, 0x1a, 0x68, 0x0a, 0x09, 0x54, 0x61, 0x67, 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, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, - 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x01, - 0x0a, 0x0d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x12, - 0x53, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, - 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x84, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, - 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, - 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x42, 0x0a, - 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x6c, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, - 0x42, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, +func (x *GetAPITokenRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetAPITokenRequest) GetFormat() RawFormat { + if x != nil { + return x.Format + } + return RawFormat_RAW_FORMAT_UNSPECIFIED +} + +// GetAPITokenResponse contains contains the details of a bearer token +// associated with a Kargo Role virtual resource. +type GetAPITokenResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Result: + // + // *GetAPITokenResponse_TokenSecret + // *GetAPITokenResponse_Raw + Result isGetAPITokenResponse_Result `protobuf_oneof:"result"` +} + +func (x *GetAPITokenResponse) Reset() { + *x = GetAPITokenResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[174] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAPITokenResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAPITokenResponse) ProtoMessage() {} + +func (x *GetAPITokenResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[174] + 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 GetAPITokenResponse.ProtoReflect.Descriptor instead. +func (*GetAPITokenResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{174} +} + +func (m *GetAPITokenResponse) GetResult() isGetAPITokenResponse_Result { + if m != nil { + return m.Result + } + return nil +} + +func (x *GetAPITokenResponse) GetTokenSecret() *v11.Secret { + if x, ok := x.GetResult().(*GetAPITokenResponse_TokenSecret); ok { + return x.TokenSecret + } + return nil +} + +func (x *GetAPITokenResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetAPITokenResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetAPITokenResponse_Result interface { + isGetAPITokenResponse_Result() +} + +type GetAPITokenResponse_TokenSecret struct { + // token_secret is a Kubernetes Secrets containing a redacted token + // associated with a Kargo Role virtual resource. + TokenSecret *v11.Secret `protobuf:"bytes,1,opt,name=token_secret,json=tokenSecret,proto3,oneof"` +} + +type GetAPITokenResponse_Raw struct { + // raw is a raw YAML or JSON representation of the requested resource. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetAPITokenResponse_TokenSecret) isGetAPITokenResponse_Result() {} + +func (*GetAPITokenResponse_Raw) isGetAPITokenResponse_Result() {} + +// ListAPITokensRequest is a request to list bearer tokens associated with a +// specified Kargo Role virtual resource. +type ListAPITokensRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // system_level indicates whether to list tokens associated with system-level + // Kargo Role virtual resources instead of ones at the project-level. + SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project containing the tokens. + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + // role_name is the name of the Kargo Role virtual resource for which to list + // associated tokens. + RoleName string `protobuf:"bytes,3,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` +} + +func (x *ListAPITokensRequest) Reset() { + *x = ListAPITokensRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[175] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAPITokensRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAPITokensRequest) ProtoMessage() {} + +func (x *ListAPITokensRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[175] + 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 ListAPITokensRequest.ProtoReflect.Descriptor instead. +func (*ListAPITokensRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{175} +} + +func (x *ListAPITokensRequest) GetSystemLevel() bool { + if x != nil { + return x.SystemLevel + } + return false +} + +func (x *ListAPITokensRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *ListAPITokensRequest) GetRoleName() string { + if x != nil { + return x.RoleName + } + return "" +} + +// ListAPITokensResponse contains a list of bearer tokens associated with a +// specified Kargo Role virtual resource. +type ListAPITokensResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // token_secrets is the list of Kubernetes Secrets containing redacted tokens + // associated with a Kargo Role virtual resource. + TokenSecrets []*v11.Secret `protobuf:"bytes,1,rep,name=token_secrets,json=tokenSecrets,proto3" json:"token_secrets,omitempty"` +} + +func (x *ListAPITokensResponse) Reset() { + *x = ListAPITokensResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[176] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAPITokensResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAPITokensResponse) ProtoMessage() {} + +func (x *ListAPITokensResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[176] + 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 ListAPITokensResponse.ProtoReflect.Descriptor instead. +func (*ListAPITokensResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{176} +} + +func (x *ListAPITokensResponse) GetTokenSecrets() []*v11.Secret { + if x != nil { + return x.TokenSecrets + } + return nil +} + +type RefreshResourceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // project is the name of the project containing the object to refresh. + // leave blank if refreshing a cluster-config. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the object to refresh. + // leave blank if refreshing a project or cluster config. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // resource_type is the kind of resource to refresh. + // should be one of: ProjectConfig, ClusterConfig, Warehouse, or Stage. + ResourceType string `protobuf:"bytes,3,opt,name=resource_type,json=resourceType,proto3" json:"resource_type,omitempty"` +} + +func (x *RefreshResourceRequest) Reset() { + *x = RefreshResourceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[177] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RefreshResourceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RefreshResourceRequest) ProtoMessage() {} + +func (x *RefreshResourceRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[177] + 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 RefreshResourceRequest.ProtoReflect.Descriptor instead. +func (*RefreshResourceRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{177} +} + +func (x *RefreshResourceRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *RefreshResourceRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *RefreshResourceRequest) GetResourceType() string { + if x != nil { + return x.ResourceType + } + return "" +} + +type RefreshResourceResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Resource *anypb.Any `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` +} + +func (x *RefreshResourceResponse) Reset() { + *x = RefreshResourceResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[178] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RefreshResourceResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RefreshResourceResponse) ProtoMessage() {} + +func (x *RefreshResourceResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[178] + 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 RefreshResourceResponse.ProtoReflect.Descriptor instead. +func (*RefreshResourceResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{178} +} + +func (x *RefreshResourceResponse) GetResource() *anypb.Any { + if x != nil { + return x.Resource + } + return nil +} + +var File_api_service_v1alpha1_service_proto protoreflect.FileDescriptor + +var file_api_service_v1alpha1_service_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x6b, 0x38, 0x73, 0x2e, 0x69, + 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x72, 0x79, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x2f, 0x76, 0x31, 0x2f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x2b, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, + 0x75, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x61, 0x70, + 0x69, 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb8, 0x01, 0x0a, 0x11, 0x43, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, + 0x00, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x03, + 0x63, 0x6c, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x01, 0x52, 0x03, 0x63, 0x6c, 0x69, 0x88, + 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x06, 0x0a, + 0x04, 0x5f, 0x63, 0x6c, 0x69, 0x22, 0xfe, 0x01, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x24, + 0x0a, 0x0e, 0x67, 0x69, 0x74, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x74, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x67, 0x69, 0x74, 0x54, 0x72, 0x65, 0x65, 0x44, + 0x69, 0x72, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, + 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x6a, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0c, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x12, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x3d, 0x0a, 0x0b, 0x41, 0x72, 0x67, 0x6f, 0x43, 0x44, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, + 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xb4, + 0x03, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0d, 0x61, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x41, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0c, 0x61, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x3a, 0x0a, 0x19, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x17, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x1a, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x18, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x22, 0x68, 0x61, + 0x73, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x6c, + 0x6f, 0x67, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x68, 0x61, 0x73, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x55, 0x72, 0x6c, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, 0x6e, 0x0a, 0x11, 0x41, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x53, + 0x68, 0x61, 0x72, 0x64, 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, 0x43, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, + 0x72, 0x67, 0x6f, 0x43, 0x44, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0xb9, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0b, 0x6f, + 0x69, 0x64, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x49, 0x44, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, + 0x6f, 0x69, 0x64, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1b, + 0x0a, 0x09, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x73, 0x6b, 0x69, 0x70, 0x41, 0x75, 0x74, 0x68, 0x22, 0x84, 0x01, 0x0a, 0x0a, + 0x4f, 0x49, 0x44, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x22, + 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x11, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x22, 0x2f, 0x0a, 0x12, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x64, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x64, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x33, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x14, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, + 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3b, 0x0a, + 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0xbc, 0x01, 0x0a, 0x1c, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, + 0x52, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, + 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, + 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, + 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x7a, 0x0a, 0x1e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x33, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x14, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x33, + 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, + 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, + 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, + 0x52, 0x17, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x2d, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x59, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, + 0x73, 0x22, 0x2d, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x73, 0x1a, 0x63, 0x0a, 0x0b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xba, 0x01, 0x0a, 0x06, 0x54, 0x61, 0x67, 0x4d, 0x61, + 0x70, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x54, 0x61, 0x67, 0x4d, 0x61, 0x70, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x68, 0x0a, 0x09, 0x54, 0x61, 0x67, + 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, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, 0x0d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x53, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x84, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x75, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x43, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1b, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8c, 0x01, - 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x15, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, - 0x74, 0x61, 0x67, 0x65, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, - 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x57, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x75, 0x6c, 0x74, 0x22, 0x42, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x70, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, - 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, - 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x45, 0x0a, 0x15, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x7b, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x6c, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x45, 0x0a, - 0x15, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, - 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, - 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x70, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x03, 0x52, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, - 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x6d, 0x69, 0x6e, 0x65, 0x22, 0x77, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, - 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, - 0x78, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x42, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xa2, 0x02, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x12, 0x51, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x01, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x88, 0x01, + 0x01, 0x12, 0x51, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, + 0x70, 0x65, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, + 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, + 0x12, 0x60, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, + 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbf, 0x05, 0x0a, + 0x12, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x12, 0x4f, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x6b, + 0x67, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x64, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x12, 0x64, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x46, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x10, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, + 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x02, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x06, 0x68, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x48, 0x03, 0x52, 0x06, 0x68, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x12, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x12, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0x5d, + 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0x9e, 0x01, + 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0e, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x0a, 0x19, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9c, + 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x66, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, + 0x69, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x01, + 0x0a, 0x1b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, + 0x0c, 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x5e, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, + 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8c, + 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, + 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, + 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x5a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x57, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, - 0x71, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x0a, 0x14, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x70, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x03, + 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, + 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x45, 0x0a, 0x15, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x7b, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x45, + 0x0a, 0x15, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, - 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x48, 0x00, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, - 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x2f, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x22, 0x73, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x2a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x67, - 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, - 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x22, 0x6c, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, - 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, + 0x01, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x03, 0x52, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6d, 0x69, 0x6e, 0x65, 0x22, 0x77, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x49, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x22, 0x78, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x0a, 0x19, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x5a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x22, 0x71, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x68, - 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, - 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x0b, 0x46, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x0a, + 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x43, 0x0a, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x22, 0x83, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, - 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, - 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x0f, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, 0x41, - 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x48, 0x00, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x2f, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, - 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, - 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x18, + 0x74, 0x22, 0x73, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, + 0x67, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x22, 0x6c, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, + 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, - 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, - 0x65, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, - 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01, - 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, - 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, + 0x68, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x0b, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, 0x77, 0x61, - 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x46, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, - 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x22, 0x83, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7c, 0x0a, - 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, - 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, 0x61, - 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x16, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, - 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xba, - 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, - 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x57, 0x0a, 0x17, 0x43, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, + 0x09, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, + 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, + 0x65, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x0f, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, + 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x41, 0x62, 0x6f, 0x72, + 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, + 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, + 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, + 0x73, 0x65, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, + 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, + 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, + 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, 0x77, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x46, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7c, + 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x16, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, + 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xba, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x22, 0x69, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, - 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, - 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x15, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x57, 0x0a, 0x17, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, + 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x69, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x15, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x22, 0x58, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, + 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, + 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x13, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x22, 0x58, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x0a, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x13, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, - 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, - 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xba, - 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, - 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x57, 0x0a, 0x17, 0x55, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, + 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0xba, 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x22, 0x80, 0x02, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, - 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, - 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, - 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, - 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x4c, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x57, 0x0a, 0x17, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, + 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x80, 0x02, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, - 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5b, 0x0a, 0x1b, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x80, 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, + 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, + 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, + 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, + 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, - 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, - 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x5c, 0x0a, 0x1d, 0x4c, 0x69, 0x73, - 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5e, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x4c, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, + 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5b, 0x0a, 0x1b, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x80, 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, + 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, + 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, + 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x5c, 0x0a, 0x1d, 0x4c, 0x69, + 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, - 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5e, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x55, 0x70, 0x64, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, @@ -11336,7 +11956,7 @@ var file_api_service_v1alpha1_service_proto_rawDesc = []byte{ 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, @@ -11344,1104 +11964,1150 @@ var file_api_service_v1alpha1_service_proto_rawDesc = []byte{ 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x60, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x72, 0x0a, 0x1f, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, - 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x22, 0x0a, - 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x38, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x1d, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, - 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, - 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, + 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, + 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x72, 0x0a, 0x1f, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, + 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x22, + 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x38, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, - 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x10, 0x61, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, - 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, - 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x4d, 0x0a, 0x1d, 0x44, 0x65, 0x6c, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x95, 0x01, 0x0a, + 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, + 0x0a, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, + 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x10, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, + 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, + 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x4d, 0x0a, 0x1d, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1a, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, - 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x18, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x7c, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xcf, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, - 0x19, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1a, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, - 0x52, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x3a, 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, - 0x15, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x9d, 0x01, - 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0c, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x18, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x7c, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xcf, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, + 0x0a, 0x19, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, + 0x00, 0x52, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, + 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, + 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x3a, 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x9d, + 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0c, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x40, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, + 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, + 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, + 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, + 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, + 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, + 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x34, 0x0a, 0x18, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x22, 0x4e, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, + 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x22, 0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, - 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, - 0x48, 0x00, 0x52, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, - 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, - 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, 0x01, - 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, - 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, - 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x34, 0x0a, 0x18, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, - 0x4e, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x06, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, - 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, - 0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, - 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0d, + 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, + 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, + 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x22, 0x0a, 0x20, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x97, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0d, 0x70, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, - 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, - 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x22, 0x0a, 0x20, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, - 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x52, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x79, 0x0a, 0x1e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x14, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x58, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x79, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, - 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x14, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x58, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, - 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xc9, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x0f, - 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x45, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, - 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, + 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xc9, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xd0, 0x01, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x45, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, + 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x48, + 0x00, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, + 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0x52, 0x0a, 0x06, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, - 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x52, - 0x0a, 0x06, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, - 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, - 0x6d, 0x73, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, - 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, - 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x54, 0x0a, 0x0d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x72, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, - 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xb2, 0x01, 0x0a, - 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x09, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, - 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, - 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x06, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x73, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, + 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x54, 0x0a, 0x0d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x72, 0x0a, 0x10, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, + 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xb2, 0x01, + 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x09, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, + 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x0e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x58, 0x0a, 0x11, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, + 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x55, 0x0a, 0x0e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, - 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x58, 0x0a, 0x11, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, - 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, - 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x85, - 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3d, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, - 0x68, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, - 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x22, 0x74, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x70, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, - 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, - 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, - 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x73, 0x22, 0x6b, 0x0a, 0x16, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x4b, 0x0a, 0x17, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, - 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2a, 0x51, 0x0a, 0x09, - 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x41, 0x57, - 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, - 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, - 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x02, 0x32, - 0xaa, 0x56, 0x0a, 0x0c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, + 0x85, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x22, 0x68, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, - 0x0f, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x22, 0x74, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x70, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x15, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, + 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x73, 0x22, 0x6b, 0x0a, 0x16, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x22, 0x4b, 0x0a, 0x17, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2a, 0x51, 0x0a, + 0x09, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x41, + 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, + 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, + 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x02, + 0x32, 0xd3, 0x58, 0x0a, 0x0c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, - 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, - 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, - 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, - 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, - 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, + 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x86, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x47, 0x65, 0x74, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0b, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x61, 0x6b, + 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7a, 0x0a, 0x0b, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x7c, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x94, 0x01, + 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x7a, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, + 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x0e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, + 0x0a, 0x0e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, + 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x7d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, + 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x0c, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, + 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x0e, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, + 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, + 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, 0x61, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, - 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, + 0x11, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, + 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, - 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, - 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, - 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, + 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x31, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x61, 0x6b, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, + 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, - 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, - 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, - 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, - 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, + 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x8c, 0x01, 0x0a, 0x11, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x38, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, + 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, + 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, + 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, + 0x6f, 0x75, 0x73, 0x65, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, + 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, - 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, + 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, + 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, + 0x73, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, - 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, - 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3c, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, - 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x86, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 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, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 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, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4d, 0x61, 0x70, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x98, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x47, - 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x9b, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x9b, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xad, 0x01, - 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x45, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, + 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa7, 0x01, - 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x44, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x47, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x37, 0x2e, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x91, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa4, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x73, 0x12, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 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, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 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, 0x12, 0x83, 0x01, 0x0a, 0x0e, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x37, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x61, 0x73, 0x6b, 0x12, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xad, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x45, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa7, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x12, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x47, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, + 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x47, + 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, + 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, + 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8c, + 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, + 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0xa4, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x42, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x39, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x40, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, + 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, + 0x12, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x2e, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x74, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x06, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, + 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x07, 0x47, - 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, - 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x05, 0x47, - 0x72, 0x61, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x06, 0x52, - 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a, 0x0a, - 0x0b, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x34, 0x2e, 0x61, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x50, + 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x36, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x93, 0x02, 0x0a, - 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2f, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x3b, 0x73, 0x76, 0x63, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, - 0x02, 0x04, 0x41, 0x49, 0x4b, 0x53, 0xaa, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x49, 0x6f, 0x2e, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x2c, 0x41, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x24, 0x41, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x3a, 0x3a, 0x49, 0x6f, 0x3a, 0x3a, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x3a, - 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x93, 0x02, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, + 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2f, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x73, 0x76, + 0x63, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x04, 0x41, 0x49, 0x4b, 0x53, + 0xaa, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x6f, 0x2e, 0x4b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0xca, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, + 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x2c, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, + 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x24, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x3a, 0x3a, + 0x49, 0x6f, 0x3a, 0x3a, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -12457,7 +13123,7 @@ func file_api_service_v1alpha1_service_proto_rawDescGZIP() []byte { } var file_api_service_v1alpha1_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_api_service_v1alpha1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 181) +var file_api_service_v1alpha1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 188) var file_api_service_v1alpha1_service_proto_goTypes = []interface{}{ (RawFormat)(0), // 0: akuity.io.kargo.service.v1alpha1.RawFormat (*ComponentVersions)(nil), // 1: akuity.io.kargo.service.v1alpha1.ComponentVersions @@ -12496,438 +13162,466 @@ var file_api_service_v1alpha1_service_proto_goTypes = []interface{}{ (*WatchStagesResponse)(nil), // 34: akuity.io.kargo.service.v1alpha1.WatchStagesResponse (*DeleteStageRequest)(nil), // 35: akuity.io.kargo.service.v1alpha1.DeleteStageRequest (*DeleteStageResponse)(nil), // 36: akuity.io.kargo.service.v1alpha1.DeleteStageResponse - (*GetClusterConfigRequest)(nil), // 37: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest - (*GetClusterConfigResponse)(nil), // 38: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse - (*DeleteClusterConfigRequest)(nil), // 39: akuity.io.kargo.service.v1alpha1.DeleteClusterConfigRequest - (*DeleteClusterConfigResponse)(nil), // 40: akuity.io.kargo.service.v1alpha1.DeleteClusterConfigResponse - (*WatchClusterConfigRequest)(nil), // 41: akuity.io.kargo.service.v1alpha1.WatchClusterConfigRequest - (*WatchClusterConfigResponse)(nil), // 42: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse - (*ListPromotionsRequest)(nil), // 43: akuity.io.kargo.service.v1alpha1.ListPromotionsRequest - (*ListPromotionsResponse)(nil), // 44: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse - (*WatchPromotionsRequest)(nil), // 45: akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest - (*WatchPromotionsResponse)(nil), // 46: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse - (*GetPromotionRequest)(nil), // 47: akuity.io.kargo.service.v1alpha1.GetPromotionRequest - (*GetPromotionResponse)(nil), // 48: akuity.io.kargo.service.v1alpha1.GetPromotionResponse - (*WatchPromotionRequest)(nil), // 49: akuity.io.kargo.service.v1alpha1.WatchPromotionRequest - (*WatchPromotionResponse)(nil), // 50: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse - (*AbortPromotionRequest)(nil), // 51: akuity.io.kargo.service.v1alpha1.AbortPromotionRequest - (*AbortPromotionResponse)(nil), // 52: akuity.io.kargo.service.v1alpha1.AbortPromotionResponse - (*DeleteProjectRequest)(nil), // 53: akuity.io.kargo.service.v1alpha1.DeleteProjectRequest - (*DeleteProjectResponse)(nil), // 54: akuity.io.kargo.service.v1alpha1.DeleteProjectResponse - (*GetProjectRequest)(nil), // 55: akuity.io.kargo.service.v1alpha1.GetProjectRequest - (*GetProjectResponse)(nil), // 56: akuity.io.kargo.service.v1alpha1.GetProjectResponse - (*ListProjectsRequest)(nil), // 57: akuity.io.kargo.service.v1alpha1.ListProjectsRequest - (*ListProjectsResponse)(nil), // 58: akuity.io.kargo.service.v1alpha1.ListProjectsResponse - (*GetProjectConfigRequest)(nil), // 59: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest - (*GetProjectConfigResponse)(nil), // 60: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse - (*DeleteProjectConfigRequest)(nil), // 61: akuity.io.kargo.service.v1alpha1.DeleteProjectConfigRequest - (*DeleteProjectConfigResponse)(nil), // 62: akuity.io.kargo.service.v1alpha1.DeleteProjectConfigResponse - (*WatchProjectConfigRequest)(nil), // 63: akuity.io.kargo.service.v1alpha1.WatchProjectConfigRequest - (*WatchProjectConfigResponse)(nil), // 64: akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse - (*ApproveFreightRequest)(nil), // 65: akuity.io.kargo.service.v1alpha1.ApproveFreightRequest - (*ApproveFreightResponse)(nil), // 66: akuity.io.kargo.service.v1alpha1.ApproveFreightResponse - (*DeleteFreightRequest)(nil), // 67: akuity.io.kargo.service.v1alpha1.DeleteFreightRequest - (*DeleteFreightResponse)(nil), // 68: akuity.io.kargo.service.v1alpha1.DeleteFreightResponse - (*GetFreightRequest)(nil), // 69: akuity.io.kargo.service.v1alpha1.GetFreightRequest - (*GetFreightResponse)(nil), // 70: akuity.io.kargo.service.v1alpha1.GetFreightResponse - (*WatchFreightRequest)(nil), // 71: akuity.io.kargo.service.v1alpha1.WatchFreightRequest - (*WatchFreightResponse)(nil), // 72: akuity.io.kargo.service.v1alpha1.WatchFreightResponse - (*PromoteToStageRequest)(nil), // 73: akuity.io.kargo.service.v1alpha1.PromoteToStageRequest - (*PromoteToStageResponse)(nil), // 74: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse - (*PromoteDownstreamRequest)(nil), // 75: akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest - (*PromoteDownstreamResponse)(nil), // 76: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse - (*QueryFreightRequest)(nil), // 77: akuity.io.kargo.service.v1alpha1.QueryFreightRequest - (*QueryFreightResponse)(nil), // 78: akuity.io.kargo.service.v1alpha1.QueryFreightResponse - (*FreightList)(nil), // 79: akuity.io.kargo.service.v1alpha1.FreightList - (*UpdateFreightAliasRequest)(nil), // 80: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest - (*UpdateFreightAliasResponse)(nil), // 81: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse - (*ReverifyRequest)(nil), // 82: akuity.io.kargo.service.v1alpha1.ReverifyRequest - (*ReverifyResponse)(nil), // 83: akuity.io.kargo.service.v1alpha1.ReverifyResponse - (*AbortVerificationRequest)(nil), // 84: akuity.io.kargo.service.v1alpha1.AbortVerificationRequest - (*AbortVerificationResponse)(nil), // 85: akuity.io.kargo.service.v1alpha1.AbortVerificationResponse - (*ListWarehousesRequest)(nil), // 86: akuity.io.kargo.service.v1alpha1.ListWarehousesRequest - (*ListWarehousesResponse)(nil), // 87: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse - (*GetWarehouseRequest)(nil), // 88: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest - (*GetWarehouseResponse)(nil), // 89: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse - (*WatchWarehousesRequest)(nil), // 90: akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest - (*WatchWarehousesResponse)(nil), // 91: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse - (*DeleteWarehouseRequest)(nil), // 92: akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest - (*DeleteWarehouseResponse)(nil), // 93: akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse - (*CreateConfigMapRequest)(nil), // 94: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest - (*CreateConfigMapResponse)(nil), // 95: akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse - (*DeleteConfigMapRequest)(nil), // 96: akuity.io.kargo.service.v1alpha1.DeleteConfigMapRequest - (*DeleteConfigMapResponse)(nil), // 97: akuity.io.kargo.service.v1alpha1.DeleteConfigMapResponse - (*ListConfigMapsRequest)(nil), // 98: akuity.io.kargo.service.v1alpha1.ListConfigMapsRequest - (*ListConfigMapsResponse)(nil), // 99: akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse - (*GetConfigMapRequest)(nil), // 100: akuity.io.kargo.service.v1alpha1.GetConfigMapRequest - (*GetConfigMapResponse)(nil), // 101: akuity.io.kargo.service.v1alpha1.GetConfigMapResponse - (*UpdateConfigMapRequest)(nil), // 102: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest - (*UpdateConfigMapResponse)(nil), // 103: akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse - (*CreateRepoCredentialsRequest)(nil), // 104: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsRequest - (*CreateRepoCredentialsResponse)(nil), // 105: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse - (*DeleteRepoCredentialsRequest)(nil), // 106: akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsRequest - (*DeleteRepoCredentialsResponse)(nil), // 107: akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsResponse - (*GetRepoCredentialsRequest)(nil), // 108: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest - (*GetRepoCredentialsResponse)(nil), // 109: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse - (*ListRepoCredentialsRequest)(nil), // 110: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsRequest - (*ListRepoCredentialsResponse)(nil), // 111: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse - (*UpdateRepoCredentialsRequest)(nil), // 112: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsRequest - (*UpdateRepoCredentialsResponse)(nil), // 113: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse - (*ListGenericCredentialsRequest)(nil), // 114: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsRequest - (*ListGenericCredentialsResponse)(nil), // 115: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse - (*CreateGenericCredentialsRequest)(nil), // 116: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest - (*CreateGenericCredentialsResponse)(nil), // 117: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse - (*UpdateGenericCredentialsRequest)(nil), // 118: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest - (*UpdateGenericCredentialsResponse)(nil), // 119: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse - (*DeleteGenericCredentialsRequest)(nil), // 120: akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsRequest - (*DeleteGenericCredentialsResponse)(nil), // 121: akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsResponse - (*ListAnalysisTemplatesRequest)(nil), // 122: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest - (*ListAnalysisTemplatesResponse)(nil), // 123: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse - (*GetAnalysisTemplateRequest)(nil), // 124: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest - (*GetAnalysisTemplateResponse)(nil), // 125: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse - (*DeleteAnalysisTemplateRequest)(nil), // 126: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest - (*DeleteAnalysisTemplateResponse)(nil), // 127: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse - (*ListClusterAnalysisTemplatesRequest)(nil), // 128: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest - (*ListClusterAnalysisTemplatesResponse)(nil), // 129: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse - (*GetClusterAnalysisTemplateRequest)(nil), // 130: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest - (*GetClusterAnalysisTemplateResponse)(nil), // 131: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse - (*DeleteClusterAnalysisTemplateRequest)(nil), // 132: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest - (*DeleteClusterAnalysisTemplateResponse)(nil), // 133: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse - (*GetAnalysisRunRequest)(nil), // 134: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest - (*GetAnalysisRunResponse)(nil), // 135: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse - (*GetAnalysisRunLogsRequest)(nil), // 136: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest - (*GetAnalysisRunLogsResponse)(nil), // 137: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse - (*ListProjectEventsRequest)(nil), // 138: akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest - (*ListProjectEventsResponse)(nil), // 139: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse - (*ListPromotionTasksRequest)(nil), // 140: akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest - (*ListPromotionTasksResponse)(nil), // 141: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse - (*GetPromotionTaskRequest)(nil), // 142: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest - (*GetPromotionTaskResponse)(nil), // 143: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse - (*ListClusterPromotionTasksRequest)(nil), // 144: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest - (*ListClusterPromotionTasksResponse)(nil), // 145: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse - (*GetClusterPromotionTaskRequest)(nil), // 146: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest - (*GetClusterPromotionTaskResponse)(nil), // 147: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse - (*CreateRoleRequest)(nil), // 148: akuity.io.kargo.service.v1alpha1.CreateRoleRequest - (*CreateRoleResponse)(nil), // 149: akuity.io.kargo.service.v1alpha1.CreateRoleResponse - (*DeleteRoleRequest)(nil), // 150: akuity.io.kargo.service.v1alpha1.DeleteRoleRequest - (*DeleteRoleResponse)(nil), // 151: akuity.io.kargo.service.v1alpha1.DeleteRoleResponse - (*GetRoleRequest)(nil), // 152: akuity.io.kargo.service.v1alpha1.GetRoleRequest - (*GetRoleResponse)(nil), // 153: akuity.io.kargo.service.v1alpha1.GetRoleResponse - (*Claims)(nil), // 154: akuity.io.kargo.service.v1alpha1.Claims - (*GrantRequest)(nil), // 155: akuity.io.kargo.service.v1alpha1.GrantRequest - (*GrantResponse)(nil), // 156: akuity.io.kargo.service.v1alpha1.GrantResponse - (*ListRolesRequest)(nil), // 157: akuity.io.kargo.service.v1alpha1.ListRolesRequest - (*ListRolesResponse)(nil), // 158: akuity.io.kargo.service.v1alpha1.ListRolesResponse - (*RevokeRequest)(nil), // 159: akuity.io.kargo.service.v1alpha1.RevokeRequest - (*RevokeResponse)(nil), // 160: akuity.io.kargo.service.v1alpha1.RevokeResponse - (*UpdateRoleRequest)(nil), // 161: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest - (*UpdateRoleResponse)(nil), // 162: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse - (*CreateAPITokenRequest)(nil), // 163: akuity.io.kargo.service.v1alpha1.CreateAPITokenRequest - (*CreateAPITokenResponse)(nil), // 164: akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse - (*DeleteAPITokenRequest)(nil), // 165: akuity.io.kargo.service.v1alpha1.DeleteAPITokenRequest - (*DeleteAPITokenResponse)(nil), // 166: akuity.io.kargo.service.v1alpha1.DeleteAPITokenResponse - (*GetAPITokenRequest)(nil), // 167: akuity.io.kargo.service.v1alpha1.GetAPITokenRequest - (*GetAPITokenResponse)(nil), // 168: akuity.io.kargo.service.v1alpha1.GetAPITokenResponse - (*ListAPITokensRequest)(nil), // 169: akuity.io.kargo.service.v1alpha1.ListAPITokensRequest - (*ListAPITokensResponse)(nil), // 170: akuity.io.kargo.service.v1alpha1.ListAPITokensResponse - (*RefreshResourceRequest)(nil), // 171: akuity.io.kargo.service.v1alpha1.RefreshResourceRequest - (*RefreshResourceResponse)(nil), // 172: akuity.io.kargo.service.v1alpha1.RefreshResourceResponse - nil, // 173: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry - nil, // 174: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry - nil, // 175: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry - nil, // 176: akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry - nil, // 177: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry - nil, // 178: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.DataEntry - nil, // 179: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.DataEntry - nil, // 180: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.DataEntry - nil, // 181: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.DataEntry - (*timestamppb.Timestamp)(nil), // 182: google.protobuf.Timestamp - (*v1alpha1.Stage)(nil), // 183: github.com.akuity.kargo.api.v1alpha1.Stage - (*v1alpha1.ClusterConfig)(nil), // 184: github.com.akuity.kargo.api.v1alpha1.ClusterConfig - (*v1alpha1.Promotion)(nil), // 185: github.com.akuity.kargo.api.v1alpha1.Promotion - (*v1alpha1.Project)(nil), // 186: github.com.akuity.kargo.api.v1alpha1.Project - (*v1alpha1.ProjectConfig)(nil), // 187: github.com.akuity.kargo.api.v1alpha1.ProjectConfig - (*v1alpha1.Freight)(nil), // 188: github.com.akuity.kargo.api.v1alpha1.Freight - (*v1alpha1.Warehouse)(nil), // 189: github.com.akuity.kargo.api.v1alpha1.Warehouse - (*v1.ConfigMap)(nil), // 190: k8s.io.api.core.v1.ConfigMap - (*v1.Secret)(nil), // 191: k8s.io.api.core.v1.Secret - (*v1alpha11.AnalysisTemplate)(nil), // 192: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate - (*v1alpha11.ClusterAnalysisTemplate)(nil), // 193: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate - (*v1alpha11.AnalysisRun)(nil), // 194: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun - (*v1.Event)(nil), // 195: k8s.io.api.core.v1.Event - (*v1alpha1.PromotionTask)(nil), // 196: github.com.akuity.kargo.api.v1alpha1.PromotionTask - (*v1alpha1.ClusterPromotionTask)(nil), // 197: github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask - (*v1alpha12.Role)(nil), // 198: github.com.akuity.kargo.api.rbac.v1alpha1.Role - (*v1alpha12.RoleResources)(nil), // 199: github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources - (*v1alpha12.Claim)(nil), // 200: github.com.akuity.kargo.api.rbac.v1alpha1.Claim - (*v1alpha12.ResourceDetails)(nil), // 201: github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails - (*anypb.Any)(nil), // 202: google.protobuf.Any + (*StageSummary)(nil), // 37: akuity.io.kargo.service.v1alpha1.StageSummary + (*StageSpecSummary)(nil), // 38: akuity.io.kargo.service.v1alpha1.StageSpecSummary + (*StageStatusSummary)(nil), // 39: akuity.io.kargo.service.v1alpha1.StageStatusSummary + (*ListStageSummariesRequest)(nil), // 40: akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest + (*ListStageSummariesResponse)(nil), // 41: akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse + (*WatchStageSummariesRequest)(nil), // 42: akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest + (*WatchStageSummariesResponse)(nil), // 43: akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse + (*GetClusterConfigRequest)(nil), // 44: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest + (*GetClusterConfigResponse)(nil), // 45: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse + (*DeleteClusterConfigRequest)(nil), // 46: akuity.io.kargo.service.v1alpha1.DeleteClusterConfigRequest + (*DeleteClusterConfigResponse)(nil), // 47: akuity.io.kargo.service.v1alpha1.DeleteClusterConfigResponse + (*WatchClusterConfigRequest)(nil), // 48: akuity.io.kargo.service.v1alpha1.WatchClusterConfigRequest + (*WatchClusterConfigResponse)(nil), // 49: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse + (*ListPromotionsRequest)(nil), // 50: akuity.io.kargo.service.v1alpha1.ListPromotionsRequest + (*ListPromotionsResponse)(nil), // 51: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse + (*WatchPromotionsRequest)(nil), // 52: akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest + (*WatchPromotionsResponse)(nil), // 53: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse + (*GetPromotionRequest)(nil), // 54: akuity.io.kargo.service.v1alpha1.GetPromotionRequest + (*GetPromotionResponse)(nil), // 55: akuity.io.kargo.service.v1alpha1.GetPromotionResponse + (*WatchPromotionRequest)(nil), // 56: akuity.io.kargo.service.v1alpha1.WatchPromotionRequest + (*WatchPromotionResponse)(nil), // 57: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse + (*AbortPromotionRequest)(nil), // 58: akuity.io.kargo.service.v1alpha1.AbortPromotionRequest + (*AbortPromotionResponse)(nil), // 59: akuity.io.kargo.service.v1alpha1.AbortPromotionResponse + (*DeleteProjectRequest)(nil), // 60: akuity.io.kargo.service.v1alpha1.DeleteProjectRequest + (*DeleteProjectResponse)(nil), // 61: akuity.io.kargo.service.v1alpha1.DeleteProjectResponse + (*GetProjectRequest)(nil), // 62: akuity.io.kargo.service.v1alpha1.GetProjectRequest + (*GetProjectResponse)(nil), // 63: akuity.io.kargo.service.v1alpha1.GetProjectResponse + (*ListProjectsRequest)(nil), // 64: akuity.io.kargo.service.v1alpha1.ListProjectsRequest + (*ListProjectsResponse)(nil), // 65: akuity.io.kargo.service.v1alpha1.ListProjectsResponse + (*GetProjectConfigRequest)(nil), // 66: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest + (*GetProjectConfigResponse)(nil), // 67: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse + (*DeleteProjectConfigRequest)(nil), // 68: akuity.io.kargo.service.v1alpha1.DeleteProjectConfigRequest + (*DeleteProjectConfigResponse)(nil), // 69: akuity.io.kargo.service.v1alpha1.DeleteProjectConfigResponse + (*WatchProjectConfigRequest)(nil), // 70: akuity.io.kargo.service.v1alpha1.WatchProjectConfigRequest + (*WatchProjectConfigResponse)(nil), // 71: akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse + (*ApproveFreightRequest)(nil), // 72: akuity.io.kargo.service.v1alpha1.ApproveFreightRequest + (*ApproveFreightResponse)(nil), // 73: akuity.io.kargo.service.v1alpha1.ApproveFreightResponse + (*DeleteFreightRequest)(nil), // 74: akuity.io.kargo.service.v1alpha1.DeleteFreightRequest + (*DeleteFreightResponse)(nil), // 75: akuity.io.kargo.service.v1alpha1.DeleteFreightResponse + (*GetFreightRequest)(nil), // 76: akuity.io.kargo.service.v1alpha1.GetFreightRequest + (*GetFreightResponse)(nil), // 77: akuity.io.kargo.service.v1alpha1.GetFreightResponse + (*WatchFreightRequest)(nil), // 78: akuity.io.kargo.service.v1alpha1.WatchFreightRequest + (*WatchFreightResponse)(nil), // 79: akuity.io.kargo.service.v1alpha1.WatchFreightResponse + (*PromoteToStageRequest)(nil), // 80: akuity.io.kargo.service.v1alpha1.PromoteToStageRequest + (*PromoteToStageResponse)(nil), // 81: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse + (*PromoteDownstreamRequest)(nil), // 82: akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest + (*PromoteDownstreamResponse)(nil), // 83: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse + (*QueryFreightRequest)(nil), // 84: akuity.io.kargo.service.v1alpha1.QueryFreightRequest + (*QueryFreightResponse)(nil), // 85: akuity.io.kargo.service.v1alpha1.QueryFreightResponse + (*FreightList)(nil), // 86: akuity.io.kargo.service.v1alpha1.FreightList + (*UpdateFreightAliasRequest)(nil), // 87: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest + (*UpdateFreightAliasResponse)(nil), // 88: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse + (*ReverifyRequest)(nil), // 89: akuity.io.kargo.service.v1alpha1.ReverifyRequest + (*ReverifyResponse)(nil), // 90: akuity.io.kargo.service.v1alpha1.ReverifyResponse + (*AbortVerificationRequest)(nil), // 91: akuity.io.kargo.service.v1alpha1.AbortVerificationRequest + (*AbortVerificationResponse)(nil), // 92: akuity.io.kargo.service.v1alpha1.AbortVerificationResponse + (*ListWarehousesRequest)(nil), // 93: akuity.io.kargo.service.v1alpha1.ListWarehousesRequest + (*ListWarehousesResponse)(nil), // 94: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse + (*GetWarehouseRequest)(nil), // 95: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest + (*GetWarehouseResponse)(nil), // 96: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse + (*WatchWarehousesRequest)(nil), // 97: akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest + (*WatchWarehousesResponse)(nil), // 98: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse + (*DeleteWarehouseRequest)(nil), // 99: akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest + (*DeleteWarehouseResponse)(nil), // 100: akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse + (*CreateConfigMapRequest)(nil), // 101: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest + (*CreateConfigMapResponse)(nil), // 102: akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse + (*DeleteConfigMapRequest)(nil), // 103: akuity.io.kargo.service.v1alpha1.DeleteConfigMapRequest + (*DeleteConfigMapResponse)(nil), // 104: akuity.io.kargo.service.v1alpha1.DeleteConfigMapResponse + (*ListConfigMapsRequest)(nil), // 105: akuity.io.kargo.service.v1alpha1.ListConfigMapsRequest + (*ListConfigMapsResponse)(nil), // 106: akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse + (*GetConfigMapRequest)(nil), // 107: akuity.io.kargo.service.v1alpha1.GetConfigMapRequest + (*GetConfigMapResponse)(nil), // 108: akuity.io.kargo.service.v1alpha1.GetConfigMapResponse + (*UpdateConfigMapRequest)(nil), // 109: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest + (*UpdateConfigMapResponse)(nil), // 110: akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse + (*CreateRepoCredentialsRequest)(nil), // 111: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsRequest + (*CreateRepoCredentialsResponse)(nil), // 112: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse + (*DeleteRepoCredentialsRequest)(nil), // 113: akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsRequest + (*DeleteRepoCredentialsResponse)(nil), // 114: akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsResponse + (*GetRepoCredentialsRequest)(nil), // 115: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest + (*GetRepoCredentialsResponse)(nil), // 116: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse + (*ListRepoCredentialsRequest)(nil), // 117: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsRequest + (*ListRepoCredentialsResponse)(nil), // 118: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse + (*UpdateRepoCredentialsRequest)(nil), // 119: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsRequest + (*UpdateRepoCredentialsResponse)(nil), // 120: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse + (*ListGenericCredentialsRequest)(nil), // 121: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsRequest + (*ListGenericCredentialsResponse)(nil), // 122: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse + (*CreateGenericCredentialsRequest)(nil), // 123: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest + (*CreateGenericCredentialsResponse)(nil), // 124: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse + (*UpdateGenericCredentialsRequest)(nil), // 125: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest + (*UpdateGenericCredentialsResponse)(nil), // 126: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse + (*DeleteGenericCredentialsRequest)(nil), // 127: akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsRequest + (*DeleteGenericCredentialsResponse)(nil), // 128: akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsResponse + (*ListAnalysisTemplatesRequest)(nil), // 129: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest + (*ListAnalysisTemplatesResponse)(nil), // 130: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse + (*GetAnalysisTemplateRequest)(nil), // 131: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest + (*GetAnalysisTemplateResponse)(nil), // 132: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse + (*DeleteAnalysisTemplateRequest)(nil), // 133: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest + (*DeleteAnalysisTemplateResponse)(nil), // 134: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse + (*ListClusterAnalysisTemplatesRequest)(nil), // 135: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest + (*ListClusterAnalysisTemplatesResponse)(nil), // 136: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse + (*GetClusterAnalysisTemplateRequest)(nil), // 137: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest + (*GetClusterAnalysisTemplateResponse)(nil), // 138: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse + (*DeleteClusterAnalysisTemplateRequest)(nil), // 139: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest + (*DeleteClusterAnalysisTemplateResponse)(nil), // 140: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse + (*GetAnalysisRunRequest)(nil), // 141: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest + (*GetAnalysisRunResponse)(nil), // 142: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse + (*GetAnalysisRunLogsRequest)(nil), // 143: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest + (*GetAnalysisRunLogsResponse)(nil), // 144: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse + (*ListProjectEventsRequest)(nil), // 145: akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest + (*ListProjectEventsResponse)(nil), // 146: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse + (*ListPromotionTasksRequest)(nil), // 147: akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest + (*ListPromotionTasksResponse)(nil), // 148: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse + (*GetPromotionTaskRequest)(nil), // 149: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest + (*GetPromotionTaskResponse)(nil), // 150: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse + (*ListClusterPromotionTasksRequest)(nil), // 151: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest + (*ListClusterPromotionTasksResponse)(nil), // 152: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse + (*GetClusterPromotionTaskRequest)(nil), // 153: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest + (*GetClusterPromotionTaskResponse)(nil), // 154: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse + (*CreateRoleRequest)(nil), // 155: akuity.io.kargo.service.v1alpha1.CreateRoleRequest + (*CreateRoleResponse)(nil), // 156: akuity.io.kargo.service.v1alpha1.CreateRoleResponse + (*DeleteRoleRequest)(nil), // 157: akuity.io.kargo.service.v1alpha1.DeleteRoleRequest + (*DeleteRoleResponse)(nil), // 158: akuity.io.kargo.service.v1alpha1.DeleteRoleResponse + (*GetRoleRequest)(nil), // 159: akuity.io.kargo.service.v1alpha1.GetRoleRequest + (*GetRoleResponse)(nil), // 160: akuity.io.kargo.service.v1alpha1.GetRoleResponse + (*Claims)(nil), // 161: akuity.io.kargo.service.v1alpha1.Claims + (*GrantRequest)(nil), // 162: akuity.io.kargo.service.v1alpha1.GrantRequest + (*GrantResponse)(nil), // 163: akuity.io.kargo.service.v1alpha1.GrantResponse + (*ListRolesRequest)(nil), // 164: akuity.io.kargo.service.v1alpha1.ListRolesRequest + (*ListRolesResponse)(nil), // 165: akuity.io.kargo.service.v1alpha1.ListRolesResponse + (*RevokeRequest)(nil), // 166: akuity.io.kargo.service.v1alpha1.RevokeRequest + (*RevokeResponse)(nil), // 167: akuity.io.kargo.service.v1alpha1.RevokeResponse + (*UpdateRoleRequest)(nil), // 168: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest + (*UpdateRoleResponse)(nil), // 169: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse + (*CreateAPITokenRequest)(nil), // 170: akuity.io.kargo.service.v1alpha1.CreateAPITokenRequest + (*CreateAPITokenResponse)(nil), // 171: akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse + (*DeleteAPITokenRequest)(nil), // 172: akuity.io.kargo.service.v1alpha1.DeleteAPITokenRequest + (*DeleteAPITokenResponse)(nil), // 173: akuity.io.kargo.service.v1alpha1.DeleteAPITokenResponse + (*GetAPITokenRequest)(nil), // 174: akuity.io.kargo.service.v1alpha1.GetAPITokenRequest + (*GetAPITokenResponse)(nil), // 175: akuity.io.kargo.service.v1alpha1.GetAPITokenResponse + (*ListAPITokensRequest)(nil), // 176: akuity.io.kargo.service.v1alpha1.ListAPITokensRequest + (*ListAPITokensResponse)(nil), // 177: akuity.io.kargo.service.v1alpha1.ListAPITokensResponse + (*RefreshResourceRequest)(nil), // 178: akuity.io.kargo.service.v1alpha1.RefreshResourceRequest + (*RefreshResourceResponse)(nil), // 179: akuity.io.kargo.service.v1alpha1.RefreshResourceResponse + nil, // 180: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry + nil, // 181: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry + nil, // 182: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry + nil, // 183: akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry + nil, // 184: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry + nil, // 185: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.DataEntry + nil, // 186: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.DataEntry + nil, // 187: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.DataEntry + nil, // 188: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.DataEntry + (*timestamppb.Timestamp)(nil), // 189: google.protobuf.Timestamp + (*v1alpha1.Stage)(nil), // 190: github.com.akuity.kargo.api.v1alpha1.Stage + (*v1.ObjectMeta)(nil), // 191: k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta + (*v1alpha1.FreightRequest)(nil), // 192: github.com.akuity.kargo.api.v1alpha1.FreightRequest + (*v1.Condition)(nil), // 193: k8s.io.apimachinery.pkg.apis.meta.v1.Condition + (*v1alpha1.FreightCollection)(nil), // 194: github.com.akuity.kargo.api.v1alpha1.FreightCollection + (*v1alpha1.PromotionReference)(nil), // 195: github.com.akuity.kargo.api.v1alpha1.PromotionReference + (*v1alpha1.Health)(nil), // 196: github.com.akuity.kargo.api.v1alpha1.Health + (*v1alpha1.ClusterConfig)(nil), // 197: github.com.akuity.kargo.api.v1alpha1.ClusterConfig + (*v1alpha1.Promotion)(nil), // 198: github.com.akuity.kargo.api.v1alpha1.Promotion + (*v1alpha1.Project)(nil), // 199: github.com.akuity.kargo.api.v1alpha1.Project + (*v1alpha1.ProjectConfig)(nil), // 200: github.com.akuity.kargo.api.v1alpha1.ProjectConfig + (*v1alpha1.Freight)(nil), // 201: github.com.akuity.kargo.api.v1alpha1.Freight + (*v1alpha1.Warehouse)(nil), // 202: github.com.akuity.kargo.api.v1alpha1.Warehouse + (*v11.ConfigMap)(nil), // 203: k8s.io.api.core.v1.ConfigMap + (*v11.Secret)(nil), // 204: k8s.io.api.core.v1.Secret + (*v1alpha11.AnalysisTemplate)(nil), // 205: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate + (*v1alpha11.ClusterAnalysisTemplate)(nil), // 206: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate + (*v1alpha11.AnalysisRun)(nil), // 207: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun + (*v11.Event)(nil), // 208: k8s.io.api.core.v1.Event + (*v1alpha1.PromotionTask)(nil), // 209: github.com.akuity.kargo.api.v1alpha1.PromotionTask + (*v1alpha1.ClusterPromotionTask)(nil), // 210: github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask + (*v1alpha12.Role)(nil), // 211: github.com.akuity.kargo.api.rbac.v1alpha1.Role + (*v1alpha12.RoleResources)(nil), // 212: github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources + (*v1alpha12.Claim)(nil), // 213: github.com.akuity.kargo.api.rbac.v1alpha1.Claim + (*v1alpha12.ResourceDetails)(nil), // 214: github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails + (*anypb.Any)(nil), // 215: google.protobuf.Any } var file_api_service_v1alpha1_service_proto_depIdxs = []int32{ 2, // 0: akuity.io.kargo.service.v1alpha1.ComponentVersions.server:type_name -> akuity.io.kargo.service.v1alpha1.VersionInfo 2, // 1: akuity.io.kargo.service.v1alpha1.ComponentVersions.cli:type_name -> akuity.io.kargo.service.v1alpha1.VersionInfo - 182, // 2: akuity.io.kargo.service.v1alpha1.VersionInfo.build_time:type_name -> google.protobuf.Timestamp + 189, // 2: akuity.io.kargo.service.v1alpha1.VersionInfo.build_time:type_name -> google.protobuf.Timestamp 2, // 3: akuity.io.kargo.service.v1alpha1.GetVersionInfoResponse.version_info:type_name -> akuity.io.kargo.service.v1alpha1.VersionInfo - 173, // 4: akuity.io.kargo.service.v1alpha1.GetConfigResponse.argocd_shards:type_name -> akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry + 180, // 4: akuity.io.kargo.service.v1alpha1.GetConfigResponse.argocd_shards:type_name -> akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry 10, // 5: akuity.io.kargo.service.v1alpha1.GetPublicConfigResponse.oidc_config:type_name -> akuity.io.kargo.service.v1alpha1.OIDCConfig 14, // 6: akuity.io.kargo.service.v1alpha1.CreateResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.CreateResourceResult 17, // 7: akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResult 20, // 8: akuity.io.kargo.service.v1alpha1.UpdateResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.UpdateResourceResult 23, // 9: akuity.io.kargo.service.v1alpha1.DeleteResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.DeleteResourceResult - 183, // 10: akuity.io.kargo.service.v1alpha1.ListStagesResponse.stages:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage - 174, // 11: akuity.io.kargo.service.v1alpha1.ListImagesResponse.images:type_name -> akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry - 175, // 12: akuity.io.kargo.service.v1alpha1.TagMap.tags:type_name -> akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry - 176, // 13: akuity.io.kargo.service.v1alpha1.ImageStageMap.stages:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry + 190, // 10: akuity.io.kargo.service.v1alpha1.ListStagesResponse.stages:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage + 181, // 11: akuity.io.kargo.service.v1alpha1.ListImagesResponse.images:type_name -> akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry + 182, // 12: akuity.io.kargo.service.v1alpha1.TagMap.tags:type_name -> akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry + 183, // 13: akuity.io.kargo.service.v1alpha1.ImageStageMap.stages:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry 0, // 14: akuity.io.kargo.service.v1alpha1.GetStageRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 183, // 15: akuity.io.kargo.service.v1alpha1.GetStageResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage - 183, // 16: akuity.io.kargo.service.v1alpha1.WatchStagesResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage - 0, // 17: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 184, // 18: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig - 184, // 19: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig - 185, // 20: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 185, // 21: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 0, // 22: akuity.io.kargo.service.v1alpha1.GetPromotionRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 185, // 23: akuity.io.kargo.service.v1alpha1.GetPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 185, // 24: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 0, // 25: akuity.io.kargo.service.v1alpha1.GetProjectRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 186, // 26: akuity.io.kargo.service.v1alpha1.GetProjectResponse.project:type_name -> github.com.akuity.kargo.api.v1alpha1.Project - 186, // 27: akuity.io.kargo.service.v1alpha1.ListProjectsResponse.projects:type_name -> github.com.akuity.kargo.api.v1alpha1.Project - 0, // 28: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 187, // 29: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig - 187, // 30: akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig - 0, // 31: akuity.io.kargo.service.v1alpha1.GetFreightRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 188, // 32: akuity.io.kargo.service.v1alpha1.GetFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight - 188, // 33: akuity.io.kargo.service.v1alpha1.WatchFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight - 185, // 34: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 185, // 35: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 177, // 36: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.groups:type_name -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry - 188, // 37: akuity.io.kargo.service.v1alpha1.FreightList.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight - 189, // 38: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse.warehouses:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse - 0, // 39: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 189, // 40: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse - 189, // 41: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse - 178, // 42: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.DataEntry - 190, // 43: akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap - 190, // 44: akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse.config_maps:type_name -> k8s.io.api.core.v1.ConfigMap - 0, // 45: akuity.io.kargo.service.v1alpha1.GetConfigMapRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 190, // 46: akuity.io.kargo.service.v1alpha1.GetConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap - 179, // 47: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.DataEntry - 190, // 48: akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap - 191, // 49: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 0, // 50: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 191, // 51: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 191, // 52: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 191, // 53: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 191, // 54: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 180, // 55: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.DataEntry - 191, // 56: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 181, // 57: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.DataEntry - 191, // 58: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 192, // 59: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse.analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate - 0, // 60: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 192, // 61: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse.analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate - 193, // 62: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse.cluster_analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate - 0, // 63: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 193, // 64: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse.cluster_analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate - 0, // 65: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 194, // 66: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse.analysis_run:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun - 195, // 67: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse.events:type_name -> k8s.io.api.core.v1.Event - 196, // 68: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse.promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask - 0, // 69: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 196, // 70: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask - 197, // 71: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse.cluster_promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask - 0, // 72: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 197, // 73: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask - 198, // 74: akuity.io.kargo.service.v1alpha1.CreateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 198, // 75: akuity.io.kargo.service.v1alpha1.CreateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 0, // 76: akuity.io.kargo.service.v1alpha1.GetRoleRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 198, // 77: akuity.io.kargo.service.v1alpha1.GetRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 199, // 78: akuity.io.kargo.service.v1alpha1.GetRoleResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources - 200, // 79: akuity.io.kargo.service.v1alpha1.Claims.claims:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Claim - 154, // 80: akuity.io.kargo.service.v1alpha1.GrantRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims - 201, // 81: akuity.io.kargo.service.v1alpha1.GrantRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails - 198, // 82: akuity.io.kargo.service.v1alpha1.GrantResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 198, // 83: akuity.io.kargo.service.v1alpha1.ListRolesResponse.roles:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 199, // 84: akuity.io.kargo.service.v1alpha1.ListRolesResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources - 154, // 85: akuity.io.kargo.service.v1alpha1.RevokeRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims - 201, // 86: akuity.io.kargo.service.v1alpha1.RevokeRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails - 198, // 87: akuity.io.kargo.service.v1alpha1.RevokeResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 198, // 88: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 198, // 89: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 191, // 90: akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse.token_secret:type_name -> k8s.io.api.core.v1.Secret - 0, // 91: akuity.io.kargo.service.v1alpha1.GetAPITokenRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 191, // 92: akuity.io.kargo.service.v1alpha1.GetAPITokenResponse.token_secret:type_name -> k8s.io.api.core.v1.Secret - 191, // 93: akuity.io.kargo.service.v1alpha1.ListAPITokensResponse.token_secrets:type_name -> k8s.io.api.core.v1.Secret - 202, // 94: akuity.io.kargo.service.v1alpha1.RefreshResourceResponse.resource:type_name -> google.protobuf.Any - 6, // 95: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ArgoCDShard - 29, // 96: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.TagMap - 30, // 97: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap - 79, // 98: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.FreightList - 3, // 99: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:input_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoRequest - 5, // 100: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigRequest - 8, // 101: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigRequest - 11, // 102: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:input_type -> akuity.io.kargo.service.v1alpha1.AdminLoginRequest - 13, // 103: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateResourceRequest - 16, // 104: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceRequest - 19, // 105: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceRequest - 22, // 106: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:input_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceRequest - 171, // 107: akuity.io.kargo.service.v1alpha1.KargoService.RefreshResource:input_type -> akuity.io.kargo.service.v1alpha1.RefreshResourceRequest - 25, // 108: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:input_type -> akuity.io.kargo.service.v1alpha1.ListStagesRequest - 27, // 109: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:input_type -> akuity.io.kargo.service.v1alpha1.ListImagesRequest - 31, // 110: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:input_type -> akuity.io.kargo.service.v1alpha1.GetStageRequest - 33, // 111: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:input_type -> akuity.io.kargo.service.v1alpha1.WatchStagesRequest - 35, // 112: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:input_type -> akuity.io.kargo.service.v1alpha1.DeleteStageRequest - 37, // 113: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest - 39, // 114: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterConfigRequest - 41, // 115: akuity.io.kargo.service.v1alpha1.KargoService.WatchClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.WatchClusterConfigRequest - 43, // 116: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsRequest - 45, // 117: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest - 47, // 118: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionRequest - 49, // 119: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionRequest - 51, // 120: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:input_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionRequest - 53, // 121: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectRequest - 55, // 122: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectRequest - 57, // 123: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectsRequest - 59, // 124: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest - 61, // 125: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectConfigRequest - 63, // 126: akuity.io.kargo.service.v1alpha1.KargoService.WatchProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.WatchProjectConfigRequest - 65, // 127: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:input_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightRequest - 67, // 128: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:input_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightRequest - 69, // 129: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:input_type -> akuity.io.kargo.service.v1alpha1.GetFreightRequest - 71, // 130: akuity.io.kargo.service.v1alpha1.KargoService.WatchFreight:input_type -> akuity.io.kargo.service.v1alpha1.WatchFreightRequest - 73, // 131: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:input_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageRequest - 75, // 132: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:input_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest - 77, // 133: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:input_type -> akuity.io.kargo.service.v1alpha1.QueryFreightRequest - 80, // 134: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:input_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest - 82, // 135: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:input_type -> akuity.io.kargo.service.v1alpha1.ReverifyRequest - 84, // 136: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:input_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationRequest - 86, // 137: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesRequest - 88, // 138: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseRequest - 90, // 139: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest - 92, // 140: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest - 104, // 141: akuity.io.kargo.service.v1alpha1.KargoService.CreateRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsRequest - 106, // 142: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsRequest - 108, // 143: akuity.io.kargo.service.v1alpha1.KargoService.GetRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest - 110, // 144: akuity.io.kargo.service.v1alpha1.KargoService.ListRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListRepoCredentialsRequest - 112, // 145: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsRequest - 114, // 146: akuity.io.kargo.service.v1alpha1.KargoService.ListGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListGenericCredentialsRequest - 116, // 147: akuity.io.kargo.service.v1alpha1.KargoService.CreateGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest - 118, // 148: akuity.io.kargo.service.v1alpha1.KargoService.UpdateGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest - 120, // 149: akuity.io.kargo.service.v1alpha1.KargoService.DeleteGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsRequest - 94, // 150: akuity.io.kargo.service.v1alpha1.KargoService.CreateConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest - 96, // 151: akuity.io.kargo.service.v1alpha1.KargoService.DeleteConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.DeleteConfigMapRequest - 98, // 152: akuity.io.kargo.service.v1alpha1.KargoService.ListConfigMaps:input_type -> akuity.io.kargo.service.v1alpha1.ListConfigMapsRequest - 100, // 153: akuity.io.kargo.service.v1alpha1.KargoService.GetConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigMapRequest - 102, // 154: akuity.io.kargo.service.v1alpha1.KargoService.UpdateConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest - 122, // 155: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest - 124, // 156: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest - 126, // 157: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest - 128, // 158: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest - 130, // 159: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest - 132, // 160: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest - 134, // 161: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest - 136, // 162: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest - 138, // 163: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest - 140, // 164: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest - 144, // 165: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest - 142, // 166: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest - 146, // 167: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest - 148, // 168: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:input_type -> akuity.io.kargo.service.v1alpha1.CreateRoleRequest - 150, // 169: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleRequest - 152, // 170: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:input_type -> akuity.io.kargo.service.v1alpha1.GetRoleRequest - 155, // 171: akuity.io.kargo.service.v1alpha1.KargoService.Grant:input_type -> akuity.io.kargo.service.v1alpha1.GrantRequest - 157, // 172: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:input_type -> akuity.io.kargo.service.v1alpha1.ListRolesRequest - 159, // 173: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:input_type -> akuity.io.kargo.service.v1alpha1.RevokeRequest - 161, // 174: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleRequest - 163, // 175: akuity.io.kargo.service.v1alpha1.KargoService.CreateAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.CreateAPITokenRequest - 165, // 176: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAPITokenRequest - 167, // 177: akuity.io.kargo.service.v1alpha1.KargoService.GetAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.GetAPITokenRequest - 169, // 178: akuity.io.kargo.service.v1alpha1.KargoService.ListAPITokens:input_type -> akuity.io.kargo.service.v1alpha1.ListAPITokensRequest - 4, // 179: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:output_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoResponse - 7, // 180: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigResponse - 9, // 181: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigResponse - 12, // 182: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:output_type -> akuity.io.kargo.service.v1alpha1.AdminLoginResponse - 15, // 183: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateResourceResponse - 18, // 184: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResponse - 21, // 185: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceResponse - 24, // 186: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:output_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceResponse - 172, // 187: akuity.io.kargo.service.v1alpha1.KargoService.RefreshResource:output_type -> akuity.io.kargo.service.v1alpha1.RefreshResourceResponse - 26, // 188: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:output_type -> akuity.io.kargo.service.v1alpha1.ListStagesResponse - 28, // 189: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:output_type -> akuity.io.kargo.service.v1alpha1.ListImagesResponse - 32, // 190: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:output_type -> akuity.io.kargo.service.v1alpha1.GetStageResponse - 34, // 191: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:output_type -> akuity.io.kargo.service.v1alpha1.WatchStagesResponse - 36, // 192: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:output_type -> akuity.io.kargo.service.v1alpha1.DeleteStageResponse - 38, // 193: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse - 40, // 194: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterConfigResponse - 42, // 195: akuity.io.kargo.service.v1alpha1.KargoService.WatchClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse - 44, // 196: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsResponse - 46, // 197: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse - 48, // 198: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionResponse - 50, // 199: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionResponse - 52, // 200: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:output_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionResponse - 54, // 201: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectResponse - 56, // 202: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectResponse - 58, // 203: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectsResponse - 60, // 204: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse - 62, // 205: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectConfigResponse - 64, // 206: akuity.io.kargo.service.v1alpha1.KargoService.WatchProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse - 66, // 207: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:output_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightResponse - 68, // 208: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:output_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightResponse - 70, // 209: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:output_type -> akuity.io.kargo.service.v1alpha1.GetFreightResponse - 72, // 210: akuity.io.kargo.service.v1alpha1.KargoService.WatchFreight:output_type -> akuity.io.kargo.service.v1alpha1.WatchFreightResponse - 74, // 211: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:output_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageResponse - 76, // 212: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:output_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse - 78, // 213: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:output_type -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse - 81, // 214: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:output_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse - 83, // 215: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:output_type -> akuity.io.kargo.service.v1alpha1.ReverifyResponse - 85, // 216: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:output_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationResponse - 87, // 217: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesResponse - 89, // 218: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseResponse - 91, // 219: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse - 93, // 220: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse - 105, // 221: akuity.io.kargo.service.v1alpha1.KargoService.CreateRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse - 107, // 222: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsResponse - 109, // 223: akuity.io.kargo.service.v1alpha1.KargoService.GetRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse - 111, // 224: akuity.io.kargo.service.v1alpha1.KargoService.ListRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse - 113, // 225: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse - 115, // 226: akuity.io.kargo.service.v1alpha1.KargoService.ListGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse - 117, // 227: akuity.io.kargo.service.v1alpha1.KargoService.CreateGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse - 119, // 228: akuity.io.kargo.service.v1alpha1.KargoService.UpdateGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse - 121, // 229: akuity.io.kargo.service.v1alpha1.KargoService.DeleteGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsResponse - 95, // 230: akuity.io.kargo.service.v1alpha1.KargoService.CreateConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse - 97, // 231: akuity.io.kargo.service.v1alpha1.KargoService.DeleteConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.DeleteConfigMapResponse - 99, // 232: akuity.io.kargo.service.v1alpha1.KargoService.ListConfigMaps:output_type -> akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse - 101, // 233: akuity.io.kargo.service.v1alpha1.KargoService.GetConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigMapResponse - 103, // 234: akuity.io.kargo.service.v1alpha1.KargoService.UpdateConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse - 123, // 235: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse - 125, // 236: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse - 127, // 237: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse - 129, // 238: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse - 131, // 239: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse - 133, // 240: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse - 135, // 241: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse - 137, // 242: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse - 139, // 243: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse - 141, // 244: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse - 145, // 245: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse - 143, // 246: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse - 147, // 247: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse - 149, // 248: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:output_type -> akuity.io.kargo.service.v1alpha1.CreateRoleResponse - 151, // 249: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleResponse - 153, // 250: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:output_type -> akuity.io.kargo.service.v1alpha1.GetRoleResponse - 156, // 251: akuity.io.kargo.service.v1alpha1.KargoService.Grant:output_type -> akuity.io.kargo.service.v1alpha1.GrantResponse - 158, // 252: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:output_type -> akuity.io.kargo.service.v1alpha1.ListRolesResponse - 160, // 253: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:output_type -> akuity.io.kargo.service.v1alpha1.RevokeResponse - 162, // 254: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleResponse - 164, // 255: akuity.io.kargo.service.v1alpha1.KargoService.CreateAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse - 166, // 256: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAPITokenResponse - 168, // 257: akuity.io.kargo.service.v1alpha1.KargoService.GetAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.GetAPITokenResponse - 170, // 258: akuity.io.kargo.service.v1alpha1.KargoService.ListAPITokens:output_type -> akuity.io.kargo.service.v1alpha1.ListAPITokensResponse - 179, // [179:259] is the sub-list for method output_type - 99, // [99:179] is the sub-list for method input_type - 99, // [99:99] is the sub-list for extension type_name - 99, // [99:99] is the sub-list for extension extendee - 0, // [0:99] is the sub-list for field type_name + 190, // 15: akuity.io.kargo.service.v1alpha1.GetStageResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage + 190, // 16: akuity.io.kargo.service.v1alpha1.WatchStagesResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage + 191, // 17: akuity.io.kargo.service.v1alpha1.StageSummary.metadata:type_name -> k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta + 38, // 18: akuity.io.kargo.service.v1alpha1.StageSummary.spec:type_name -> akuity.io.kargo.service.v1alpha1.StageSpecSummary + 39, // 19: akuity.io.kargo.service.v1alpha1.StageSummary.status:type_name -> akuity.io.kargo.service.v1alpha1.StageStatusSummary + 192, // 20: akuity.io.kargo.service.v1alpha1.StageSpecSummary.requestedFreight:type_name -> github.com.akuity.kargo.api.v1alpha1.FreightRequest + 193, // 21: akuity.io.kargo.service.v1alpha1.StageStatusSummary.conditions:type_name -> k8s.io.apimachinery.pkg.apis.meta.v1.Condition + 194, // 22: akuity.io.kargo.service.v1alpha1.StageStatusSummary.currentFreight:type_name -> github.com.akuity.kargo.api.v1alpha1.FreightCollection + 195, // 23: akuity.io.kargo.service.v1alpha1.StageStatusSummary.currentPromotion:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionReference + 195, // 24: akuity.io.kargo.service.v1alpha1.StageStatusSummary.lastPromotion:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionReference + 196, // 25: akuity.io.kargo.service.v1alpha1.StageStatusSummary.health:type_name -> github.com.akuity.kargo.api.v1alpha1.Health + 37, // 26: akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse.stageSummaries:type_name -> akuity.io.kargo.service.v1alpha1.StageSummary + 37, // 27: akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse.stageSummary:type_name -> akuity.io.kargo.service.v1alpha1.StageSummary + 0, // 28: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 197, // 29: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig + 197, // 30: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig + 198, // 31: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 198, // 32: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 0, // 33: akuity.io.kargo.service.v1alpha1.GetPromotionRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 198, // 34: akuity.io.kargo.service.v1alpha1.GetPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 198, // 35: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 0, // 36: akuity.io.kargo.service.v1alpha1.GetProjectRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 199, // 37: akuity.io.kargo.service.v1alpha1.GetProjectResponse.project:type_name -> github.com.akuity.kargo.api.v1alpha1.Project + 199, // 38: akuity.io.kargo.service.v1alpha1.ListProjectsResponse.projects:type_name -> github.com.akuity.kargo.api.v1alpha1.Project + 0, // 39: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 200, // 40: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig + 200, // 41: akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig + 0, // 42: akuity.io.kargo.service.v1alpha1.GetFreightRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 201, // 43: akuity.io.kargo.service.v1alpha1.GetFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight + 201, // 44: akuity.io.kargo.service.v1alpha1.WatchFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight + 198, // 45: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 198, // 46: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 184, // 47: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.groups:type_name -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry + 201, // 48: akuity.io.kargo.service.v1alpha1.FreightList.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight + 202, // 49: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse.warehouses:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse + 0, // 50: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 202, // 51: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse + 202, // 52: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse + 185, // 53: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.DataEntry + 203, // 54: akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap + 203, // 55: akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse.config_maps:type_name -> k8s.io.api.core.v1.ConfigMap + 0, // 56: akuity.io.kargo.service.v1alpha1.GetConfigMapRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 203, // 57: akuity.io.kargo.service.v1alpha1.GetConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap + 186, // 58: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.DataEntry + 203, // 59: akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap + 204, // 60: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 0, // 61: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 204, // 62: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 204, // 63: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 204, // 64: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 204, // 65: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 187, // 66: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.DataEntry + 204, // 67: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 188, // 68: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.DataEntry + 204, // 69: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 205, // 70: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse.analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate + 0, // 71: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 205, // 72: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse.analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate + 206, // 73: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse.cluster_analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate + 0, // 74: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 206, // 75: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse.cluster_analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate + 0, // 76: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 207, // 77: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse.analysis_run:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun + 208, // 78: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse.events:type_name -> k8s.io.api.core.v1.Event + 209, // 79: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse.promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask + 0, // 80: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 209, // 81: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask + 210, // 82: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse.cluster_promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask + 0, // 83: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 210, // 84: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask + 211, // 85: akuity.io.kargo.service.v1alpha1.CreateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 211, // 86: akuity.io.kargo.service.v1alpha1.CreateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 0, // 87: akuity.io.kargo.service.v1alpha1.GetRoleRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 211, // 88: akuity.io.kargo.service.v1alpha1.GetRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 212, // 89: akuity.io.kargo.service.v1alpha1.GetRoleResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources + 213, // 90: akuity.io.kargo.service.v1alpha1.Claims.claims:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Claim + 161, // 91: akuity.io.kargo.service.v1alpha1.GrantRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims + 214, // 92: akuity.io.kargo.service.v1alpha1.GrantRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails + 211, // 93: akuity.io.kargo.service.v1alpha1.GrantResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 211, // 94: akuity.io.kargo.service.v1alpha1.ListRolesResponse.roles:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 212, // 95: akuity.io.kargo.service.v1alpha1.ListRolesResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources + 161, // 96: akuity.io.kargo.service.v1alpha1.RevokeRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims + 214, // 97: akuity.io.kargo.service.v1alpha1.RevokeRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails + 211, // 98: akuity.io.kargo.service.v1alpha1.RevokeResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 211, // 99: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 211, // 100: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 204, // 101: akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse.token_secret:type_name -> k8s.io.api.core.v1.Secret + 0, // 102: akuity.io.kargo.service.v1alpha1.GetAPITokenRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 204, // 103: akuity.io.kargo.service.v1alpha1.GetAPITokenResponse.token_secret:type_name -> k8s.io.api.core.v1.Secret + 204, // 104: akuity.io.kargo.service.v1alpha1.ListAPITokensResponse.token_secrets:type_name -> k8s.io.api.core.v1.Secret + 215, // 105: akuity.io.kargo.service.v1alpha1.RefreshResourceResponse.resource:type_name -> google.protobuf.Any + 6, // 106: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ArgoCDShard + 29, // 107: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.TagMap + 30, // 108: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap + 86, // 109: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.FreightList + 3, // 110: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:input_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoRequest + 5, // 111: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigRequest + 8, // 112: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigRequest + 11, // 113: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:input_type -> akuity.io.kargo.service.v1alpha1.AdminLoginRequest + 13, // 114: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateResourceRequest + 16, // 115: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceRequest + 19, // 116: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceRequest + 22, // 117: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:input_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceRequest + 178, // 118: akuity.io.kargo.service.v1alpha1.KargoService.RefreshResource:input_type -> akuity.io.kargo.service.v1alpha1.RefreshResourceRequest + 25, // 119: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:input_type -> akuity.io.kargo.service.v1alpha1.ListStagesRequest + 40, // 120: akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries:input_type -> akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest + 27, // 121: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:input_type -> akuity.io.kargo.service.v1alpha1.ListImagesRequest + 31, // 122: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:input_type -> akuity.io.kargo.service.v1alpha1.GetStageRequest + 33, // 123: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:input_type -> akuity.io.kargo.service.v1alpha1.WatchStagesRequest + 42, // 124: akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries:input_type -> akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest + 35, // 125: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:input_type -> akuity.io.kargo.service.v1alpha1.DeleteStageRequest + 44, // 126: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest + 46, // 127: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterConfigRequest + 48, // 128: akuity.io.kargo.service.v1alpha1.KargoService.WatchClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.WatchClusterConfigRequest + 50, // 129: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsRequest + 52, // 130: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest + 54, // 131: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionRequest + 56, // 132: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionRequest + 58, // 133: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:input_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionRequest + 60, // 134: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectRequest + 62, // 135: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectRequest + 64, // 136: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectsRequest + 66, // 137: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest + 68, // 138: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectConfigRequest + 70, // 139: akuity.io.kargo.service.v1alpha1.KargoService.WatchProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.WatchProjectConfigRequest + 72, // 140: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:input_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightRequest + 74, // 141: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:input_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightRequest + 76, // 142: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:input_type -> akuity.io.kargo.service.v1alpha1.GetFreightRequest + 78, // 143: akuity.io.kargo.service.v1alpha1.KargoService.WatchFreight:input_type -> akuity.io.kargo.service.v1alpha1.WatchFreightRequest + 80, // 144: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:input_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageRequest + 82, // 145: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:input_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest + 84, // 146: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:input_type -> akuity.io.kargo.service.v1alpha1.QueryFreightRequest + 87, // 147: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:input_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest + 89, // 148: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:input_type -> akuity.io.kargo.service.v1alpha1.ReverifyRequest + 91, // 149: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:input_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationRequest + 93, // 150: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesRequest + 95, // 151: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseRequest + 97, // 152: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest + 99, // 153: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest + 111, // 154: akuity.io.kargo.service.v1alpha1.KargoService.CreateRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsRequest + 113, // 155: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsRequest + 115, // 156: akuity.io.kargo.service.v1alpha1.KargoService.GetRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest + 117, // 157: akuity.io.kargo.service.v1alpha1.KargoService.ListRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListRepoCredentialsRequest + 119, // 158: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsRequest + 121, // 159: akuity.io.kargo.service.v1alpha1.KargoService.ListGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListGenericCredentialsRequest + 123, // 160: akuity.io.kargo.service.v1alpha1.KargoService.CreateGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest + 125, // 161: akuity.io.kargo.service.v1alpha1.KargoService.UpdateGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest + 127, // 162: akuity.io.kargo.service.v1alpha1.KargoService.DeleteGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsRequest + 101, // 163: akuity.io.kargo.service.v1alpha1.KargoService.CreateConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest + 103, // 164: akuity.io.kargo.service.v1alpha1.KargoService.DeleteConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.DeleteConfigMapRequest + 105, // 165: akuity.io.kargo.service.v1alpha1.KargoService.ListConfigMaps:input_type -> akuity.io.kargo.service.v1alpha1.ListConfigMapsRequest + 107, // 166: akuity.io.kargo.service.v1alpha1.KargoService.GetConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigMapRequest + 109, // 167: akuity.io.kargo.service.v1alpha1.KargoService.UpdateConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest + 129, // 168: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest + 131, // 169: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest + 133, // 170: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest + 135, // 171: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest + 137, // 172: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest + 139, // 173: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest + 141, // 174: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest + 143, // 175: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest + 145, // 176: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest + 147, // 177: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest + 151, // 178: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest + 149, // 179: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest + 153, // 180: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest + 155, // 181: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:input_type -> akuity.io.kargo.service.v1alpha1.CreateRoleRequest + 157, // 182: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleRequest + 159, // 183: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:input_type -> akuity.io.kargo.service.v1alpha1.GetRoleRequest + 162, // 184: akuity.io.kargo.service.v1alpha1.KargoService.Grant:input_type -> akuity.io.kargo.service.v1alpha1.GrantRequest + 164, // 185: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:input_type -> akuity.io.kargo.service.v1alpha1.ListRolesRequest + 166, // 186: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:input_type -> akuity.io.kargo.service.v1alpha1.RevokeRequest + 168, // 187: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleRequest + 170, // 188: akuity.io.kargo.service.v1alpha1.KargoService.CreateAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.CreateAPITokenRequest + 172, // 189: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAPITokenRequest + 174, // 190: akuity.io.kargo.service.v1alpha1.KargoService.GetAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.GetAPITokenRequest + 176, // 191: akuity.io.kargo.service.v1alpha1.KargoService.ListAPITokens:input_type -> akuity.io.kargo.service.v1alpha1.ListAPITokensRequest + 4, // 192: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:output_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoResponse + 7, // 193: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigResponse + 9, // 194: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigResponse + 12, // 195: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:output_type -> akuity.io.kargo.service.v1alpha1.AdminLoginResponse + 15, // 196: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateResourceResponse + 18, // 197: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResponse + 21, // 198: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceResponse + 24, // 199: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:output_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceResponse + 179, // 200: akuity.io.kargo.service.v1alpha1.KargoService.RefreshResource:output_type -> akuity.io.kargo.service.v1alpha1.RefreshResourceResponse + 26, // 201: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:output_type -> akuity.io.kargo.service.v1alpha1.ListStagesResponse + 41, // 202: akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries:output_type -> akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse + 28, // 203: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:output_type -> akuity.io.kargo.service.v1alpha1.ListImagesResponse + 32, // 204: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:output_type -> akuity.io.kargo.service.v1alpha1.GetStageResponse + 34, // 205: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:output_type -> akuity.io.kargo.service.v1alpha1.WatchStagesResponse + 43, // 206: akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries:output_type -> akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse + 36, // 207: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:output_type -> akuity.io.kargo.service.v1alpha1.DeleteStageResponse + 45, // 208: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse + 47, // 209: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterConfigResponse + 49, // 210: akuity.io.kargo.service.v1alpha1.KargoService.WatchClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse + 51, // 211: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsResponse + 53, // 212: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse + 55, // 213: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionResponse + 57, // 214: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionResponse + 59, // 215: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:output_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionResponse + 61, // 216: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectResponse + 63, // 217: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectResponse + 65, // 218: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectsResponse + 67, // 219: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse + 69, // 220: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectConfigResponse + 71, // 221: akuity.io.kargo.service.v1alpha1.KargoService.WatchProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse + 73, // 222: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:output_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightResponse + 75, // 223: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:output_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightResponse + 77, // 224: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:output_type -> akuity.io.kargo.service.v1alpha1.GetFreightResponse + 79, // 225: akuity.io.kargo.service.v1alpha1.KargoService.WatchFreight:output_type -> akuity.io.kargo.service.v1alpha1.WatchFreightResponse + 81, // 226: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:output_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageResponse + 83, // 227: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:output_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse + 85, // 228: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:output_type -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse + 88, // 229: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:output_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse + 90, // 230: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:output_type -> akuity.io.kargo.service.v1alpha1.ReverifyResponse + 92, // 231: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:output_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationResponse + 94, // 232: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesResponse + 96, // 233: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseResponse + 98, // 234: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse + 100, // 235: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse + 112, // 236: akuity.io.kargo.service.v1alpha1.KargoService.CreateRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse + 114, // 237: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsResponse + 116, // 238: akuity.io.kargo.service.v1alpha1.KargoService.GetRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse + 118, // 239: akuity.io.kargo.service.v1alpha1.KargoService.ListRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse + 120, // 240: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse + 122, // 241: akuity.io.kargo.service.v1alpha1.KargoService.ListGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse + 124, // 242: akuity.io.kargo.service.v1alpha1.KargoService.CreateGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse + 126, // 243: akuity.io.kargo.service.v1alpha1.KargoService.UpdateGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse + 128, // 244: akuity.io.kargo.service.v1alpha1.KargoService.DeleteGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsResponse + 102, // 245: akuity.io.kargo.service.v1alpha1.KargoService.CreateConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse + 104, // 246: akuity.io.kargo.service.v1alpha1.KargoService.DeleteConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.DeleteConfigMapResponse + 106, // 247: akuity.io.kargo.service.v1alpha1.KargoService.ListConfigMaps:output_type -> akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse + 108, // 248: akuity.io.kargo.service.v1alpha1.KargoService.GetConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigMapResponse + 110, // 249: akuity.io.kargo.service.v1alpha1.KargoService.UpdateConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse + 130, // 250: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse + 132, // 251: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse + 134, // 252: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse + 136, // 253: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse + 138, // 254: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse + 140, // 255: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse + 142, // 256: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse + 144, // 257: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse + 146, // 258: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse + 148, // 259: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse + 152, // 260: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse + 150, // 261: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse + 154, // 262: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse + 156, // 263: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:output_type -> akuity.io.kargo.service.v1alpha1.CreateRoleResponse + 158, // 264: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleResponse + 160, // 265: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:output_type -> akuity.io.kargo.service.v1alpha1.GetRoleResponse + 163, // 266: akuity.io.kargo.service.v1alpha1.KargoService.Grant:output_type -> akuity.io.kargo.service.v1alpha1.GrantResponse + 165, // 267: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:output_type -> akuity.io.kargo.service.v1alpha1.ListRolesResponse + 167, // 268: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:output_type -> akuity.io.kargo.service.v1alpha1.RevokeResponse + 169, // 269: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleResponse + 171, // 270: akuity.io.kargo.service.v1alpha1.KargoService.CreateAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse + 173, // 271: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAPITokenResponse + 175, // 272: akuity.io.kargo.service.v1alpha1.KargoService.GetAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.GetAPITokenResponse + 177, // 273: akuity.io.kargo.service.v1alpha1.KargoService.ListAPITokens:output_type -> akuity.io.kargo.service.v1alpha1.ListAPITokensResponse + 192, // [192:274] is the sub-list for method output_type + 110, // [110:192] is the sub-list for method input_type + 110, // [110:110] is the sub-list for extension type_name + 110, // [110:110] is the sub-list for extension extendee + 0, // [0:110] is the sub-list for field type_name } func init() { file_api_service_v1alpha1_service_proto_init() } @@ -13369,7 +14063,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetClusterConfigRequest); i { + switch v := v.(*StageSummary); i { case 0: return &v.state case 1: @@ -13381,7 +14075,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetClusterConfigResponse); i { + switch v := v.(*StageSpecSummary); i { case 0: return &v.state case 1: @@ -13393,7 +14087,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteClusterConfigRequest); i { + switch v := v.(*StageStatusSummary); i { case 0: return &v.state case 1: @@ -13405,7 +14099,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteClusterConfigResponse); i { + switch v := v.(*ListStageSummariesRequest); i { case 0: return &v.state case 1: @@ -13417,7 +14111,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchClusterConfigRequest); i { + switch v := v.(*ListStageSummariesResponse); i { case 0: return &v.state case 1: @@ -13429,6 +14123,90 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WatchStageSummariesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_service_v1alpha1_service_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WatchStageSummariesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_service_v1alpha1_service_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetClusterConfigRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_service_v1alpha1_service_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetClusterConfigResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_service_v1alpha1_service_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteClusterConfigRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_service_v1alpha1_service_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteClusterConfigResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_service_v1alpha1_service_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WatchClusterConfigRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_service_v1alpha1_service_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchClusterConfigResponse); i { case 0: return &v.state @@ -13440,7 +14218,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPromotionsRequest); i { case 0: return &v.state @@ -13452,7 +14230,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPromotionsResponse); i { case 0: return &v.state @@ -13464,7 +14242,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchPromotionsRequest); i { case 0: return &v.state @@ -13476,7 +14254,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchPromotionsResponse); i { case 0: return &v.state @@ -13488,7 +14266,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPromotionRequest); i { case 0: return &v.state @@ -13500,7 +14278,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPromotionResponse); i { case 0: return &v.state @@ -13512,7 +14290,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchPromotionRequest); i { case 0: return &v.state @@ -13524,7 +14302,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchPromotionResponse); i { case 0: return &v.state @@ -13536,7 +14314,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbortPromotionRequest); i { case 0: return &v.state @@ -13548,7 +14326,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbortPromotionResponse); i { case 0: return &v.state @@ -13560,7 +14338,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectRequest); i { case 0: return &v.state @@ -13572,7 +14350,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectResponse); i { case 0: return &v.state @@ -13584,7 +14362,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectRequest); i { case 0: return &v.state @@ -13596,7 +14374,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectResponse); i { case 0: return &v.state @@ -13608,7 +14386,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectsRequest); i { case 0: return &v.state @@ -13620,7 +14398,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectsResponse); i { case 0: return &v.state @@ -13632,7 +14410,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectConfigRequest); i { case 0: return &v.state @@ -13644,7 +14422,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectConfigResponse); i { case 0: return &v.state @@ -13656,7 +14434,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectConfigRequest); i { case 0: return &v.state @@ -13668,7 +14446,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectConfigResponse); i { case 0: return &v.state @@ -13680,7 +14458,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchProjectConfigRequest); i { case 0: return &v.state @@ -13692,7 +14470,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchProjectConfigResponse); i { case 0: return &v.state @@ -13704,7 +14482,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ApproveFreightRequest); i { case 0: return &v.state @@ -13716,7 +14494,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ApproveFreightResponse); i { case 0: return &v.state @@ -13728,7 +14506,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFreightRequest); i { case 0: return &v.state @@ -13740,7 +14518,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFreightResponse); i { case 0: return &v.state @@ -13752,7 +14530,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFreightRequest); i { case 0: return &v.state @@ -13764,7 +14542,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFreightResponse); i { case 0: return &v.state @@ -13776,7 +14554,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchFreightRequest); i { case 0: return &v.state @@ -13788,7 +14566,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchFreightResponse); i { case 0: return &v.state @@ -13800,7 +14578,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PromoteToStageRequest); i { case 0: return &v.state @@ -13812,7 +14590,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PromoteToStageResponse); i { case 0: return &v.state @@ -13824,7 +14602,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PromoteDownstreamRequest); i { case 0: return &v.state @@ -13836,7 +14614,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PromoteDownstreamResponse); i { case 0: return &v.state @@ -13848,7 +14626,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryFreightRequest); i { case 0: return &v.state @@ -13860,7 +14638,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryFreightResponse); i { case 0: return &v.state @@ -13872,7 +14650,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FreightList); i { case 0: return &v.state @@ -13884,7 +14662,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateFreightAliasRequest); i { case 0: return &v.state @@ -13896,7 +14674,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateFreightAliasResponse); i { case 0: return &v.state @@ -13908,7 +14686,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReverifyRequest); i { case 0: return &v.state @@ -13920,7 +14698,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReverifyResponse); i { case 0: return &v.state @@ -13932,7 +14710,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbortVerificationRequest); i { case 0: return &v.state @@ -13944,7 +14722,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbortVerificationResponse); i { case 0: return &v.state @@ -13956,7 +14734,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWarehousesRequest); i { case 0: return &v.state @@ -13968,7 +14746,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWarehousesResponse); i { case 0: return &v.state @@ -13980,7 +14758,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWarehouseRequest); i { case 0: return &v.state @@ -13992,7 +14770,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWarehouseResponse); i { case 0: return &v.state @@ -14004,7 +14782,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchWarehousesRequest); i { case 0: return &v.state @@ -14016,7 +14794,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchWarehousesResponse); i { case 0: return &v.state @@ -14028,7 +14806,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteWarehouseRequest); i { case 0: return &v.state @@ -14040,7 +14818,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteWarehouseResponse); i { case 0: return &v.state @@ -14052,7 +14830,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateConfigMapRequest); i { case 0: return &v.state @@ -14064,7 +14842,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateConfigMapResponse); i { case 0: return &v.state @@ -14076,7 +14854,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteConfigMapRequest); i { case 0: return &v.state @@ -14088,7 +14866,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteConfigMapResponse); i { case 0: return &v.state @@ -14100,7 +14878,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListConfigMapsRequest); i { case 0: return &v.state @@ -14112,7 +14890,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListConfigMapsResponse); i { case 0: return &v.state @@ -14124,7 +14902,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetConfigMapRequest); i { case 0: return &v.state @@ -14136,7 +14914,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetConfigMapResponse); i { case 0: return &v.state @@ -14148,7 +14926,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateConfigMapRequest); i { case 0: return &v.state @@ -14160,7 +14938,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateConfigMapResponse); i { case 0: return &v.state @@ -14172,7 +14950,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRepoCredentialsRequest); i { case 0: return &v.state @@ -14184,7 +14962,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRepoCredentialsResponse); i { case 0: return &v.state @@ -14196,7 +14974,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRepoCredentialsRequest); i { case 0: return &v.state @@ -14208,7 +14986,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRepoCredentialsResponse); i { case 0: return &v.state @@ -14220,7 +14998,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRepoCredentialsRequest); i { case 0: return &v.state @@ -14232,7 +15010,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRepoCredentialsResponse); i { case 0: return &v.state @@ -14244,7 +15022,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRepoCredentialsRequest); i { case 0: return &v.state @@ -14256,7 +15034,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRepoCredentialsResponse); i { case 0: return &v.state @@ -14268,7 +15046,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRepoCredentialsRequest); i { case 0: return &v.state @@ -14280,7 +15058,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRepoCredentialsResponse); i { case 0: return &v.state @@ -14292,7 +15070,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGenericCredentialsRequest); i { case 0: return &v.state @@ -14304,7 +15082,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGenericCredentialsResponse); i { case 0: return &v.state @@ -14316,7 +15094,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateGenericCredentialsRequest); i { case 0: return &v.state @@ -14328,7 +15106,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateGenericCredentialsResponse); i { case 0: return &v.state @@ -14340,7 +15118,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGenericCredentialsRequest); i { case 0: return &v.state @@ -14352,7 +15130,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGenericCredentialsResponse); i { case 0: return &v.state @@ -14364,7 +15142,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteGenericCredentialsRequest); i { case 0: return &v.state @@ -14376,7 +15154,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteGenericCredentialsResponse); i { case 0: return &v.state @@ -14388,7 +15166,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAnalysisTemplatesRequest); i { case 0: return &v.state @@ -14400,7 +15178,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAnalysisTemplatesResponse); i { case 0: return &v.state @@ -14412,7 +15190,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisTemplateRequest); i { case 0: return &v.state @@ -14424,7 +15202,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisTemplateResponse); i { case 0: return &v.state @@ -14436,7 +15214,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAnalysisTemplateRequest); i { case 0: return &v.state @@ -14448,7 +15226,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAnalysisTemplateResponse); i { case 0: return &v.state @@ -14460,7 +15238,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClusterAnalysisTemplatesRequest); i { case 0: return &v.state @@ -14472,7 +15250,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClusterAnalysisTemplatesResponse); i { case 0: return &v.state @@ -14484,7 +15262,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAnalysisTemplateRequest); i { case 0: return &v.state @@ -14496,7 +15274,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAnalysisTemplateResponse); i { case 0: return &v.state @@ -14508,7 +15286,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteClusterAnalysisTemplateRequest); i { case 0: return &v.state @@ -14520,7 +15298,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteClusterAnalysisTemplateResponse); i { case 0: return &v.state @@ -14532,7 +15310,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisRunRequest); i { case 0: return &v.state @@ -14544,7 +15322,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisRunResponse); i { case 0: return &v.state @@ -14556,7 +15334,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisRunLogsRequest); i { case 0: return &v.state @@ -14568,7 +15346,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisRunLogsResponse); i { case 0: return &v.state @@ -14580,7 +15358,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectEventsRequest); i { case 0: return &v.state @@ -14592,7 +15370,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectEventsResponse); i { case 0: return &v.state @@ -14604,7 +15382,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPromotionTasksRequest); i { case 0: return &v.state @@ -14616,7 +15394,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPromotionTasksResponse); i { case 0: return &v.state @@ -14628,7 +15406,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPromotionTaskRequest); i { case 0: return &v.state @@ -14640,7 +15418,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPromotionTaskResponse); i { case 0: return &v.state @@ -14652,7 +15430,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClusterPromotionTasksRequest); i { case 0: return &v.state @@ -14664,7 +15442,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClusterPromotionTasksResponse); i { case 0: return &v.state @@ -14676,7 +15454,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterPromotionTaskRequest); i { case 0: return &v.state @@ -14688,7 +15466,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterPromotionTaskResponse); i { case 0: return &v.state @@ -14700,7 +15478,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRoleRequest); i { case 0: return &v.state @@ -14712,7 +15490,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRoleResponse); i { case 0: return &v.state @@ -14724,7 +15502,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRoleRequest); i { case 0: return &v.state @@ -14736,7 +15514,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRoleResponse); i { case 0: return &v.state @@ -14748,7 +15526,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRoleRequest); i { case 0: return &v.state @@ -14760,7 +15538,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRoleResponse); i { case 0: return &v.state @@ -14772,7 +15550,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Claims); i { case 0: return &v.state @@ -14784,7 +15562,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GrantRequest); i { case 0: return &v.state @@ -14796,7 +15574,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GrantResponse); i { case 0: return &v.state @@ -14808,7 +15586,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRolesRequest); i { case 0: return &v.state @@ -14820,7 +15598,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRolesResponse); i { case 0: return &v.state @@ -14832,7 +15610,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokeRequest); i { case 0: return &v.state @@ -14844,7 +15622,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokeResponse); i { case 0: return &v.state @@ -14856,7 +15634,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRoleRequest); i { case 0: return &v.state @@ -14868,7 +15646,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRoleResponse); i { case 0: return &v.state @@ -14880,7 +15658,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAPITokenRequest); i { case 0: return &v.state @@ -14892,7 +15670,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAPITokenResponse); i { case 0: return &v.state @@ -14904,7 +15682,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAPITokenRequest); i { case 0: return &v.state @@ -14916,7 +15694,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAPITokenResponse); i { case 0: return &v.state @@ -14928,7 +15706,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAPITokenRequest); i { case 0: return &v.state @@ -14940,7 +15718,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAPITokenResponse); i { case 0: return &v.state @@ -14952,7 +15730,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAPITokensRequest); i { case 0: return &v.state @@ -14964,7 +15742,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAPITokensResponse); i { case 0: return &v.state @@ -14976,7 +15754,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RefreshResourceRequest); i { case 0: return &v.state @@ -14988,7 +15766,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RefreshResourceResponse); i { case 0: return &v.state @@ -15023,75 +15801,78 @@ func file_api_service_v1alpha1_service_proto_init() { (*GetStageResponse_Stage)(nil), (*GetStageResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[37].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[36].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[38].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[42].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[44].OneofWrappers = []interface{}{ (*GetClusterConfigResponse_ClusterConfig)(nil), (*GetClusterConfigResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[42].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[44].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[47].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[49].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[51].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[54].OneofWrappers = []interface{}{ (*GetPromotionResponse_Promotion)(nil), (*GetPromotionResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[55].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[62].OneofWrappers = []interface{}{ (*GetProjectResponse_Project)(nil), (*GetProjectResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[56].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[59].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[63].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[66].OneofWrappers = []interface{}{ (*GetProjectConfigResponse_ProjectConfig)(nil), (*GetProjectConfigResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[69].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[76].OneofWrappers = []interface{}{ (*GetFreightResponse_Freight)(nil), (*GetFreightResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[88].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[95].OneofWrappers = []interface{}{ (*GetWarehouseResponse_Warehouse)(nil), (*GetWarehouseResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[100].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[107].OneofWrappers = []interface{}{ (*GetConfigMapResponse_ConfigMap)(nil), (*GetConfigMapResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[108].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[115].OneofWrappers = []interface{}{ (*GetRepoCredentialsResponse_Credentials)(nil), (*GetRepoCredentialsResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[124].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[131].OneofWrappers = []interface{}{ (*GetAnalysisTemplateResponse_AnalysisTemplate)(nil), (*GetAnalysisTemplateResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[130].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[137].OneofWrappers = []interface{}{ (*GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate)(nil), (*GetClusterAnalysisTemplateResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[134].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[141].OneofWrappers = []interface{}{ (*GetAnalysisRunResponse_AnalysisRun)(nil), (*GetAnalysisRunResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[142].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[149].OneofWrappers = []interface{}{ (*GetPromotionTaskResponse_PromotionTask)(nil), (*GetPromotionTaskResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[146].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[153].OneofWrappers = []interface{}{ (*GetClusterPromotionTaskResponse_PromotionTask)(nil), (*GetClusterPromotionTaskResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[152].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[159].OneofWrappers = []interface{}{ (*GetRoleResponse_Role)(nil), (*GetRoleResponse_Resources)(nil), (*GetRoleResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[154].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[161].OneofWrappers = []interface{}{ (*GrantRequest_UserClaims)(nil), (*GrantRequest_ResourceDetails)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[158].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[165].OneofWrappers = []interface{}{ (*RevokeRequest_UserClaims)(nil), (*RevokeRequest_ResourceDetails)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[167].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[174].OneofWrappers = []interface{}{ (*GetAPITokenResponse_TokenSecret)(nil), (*GetAPITokenResponse_Raw)(nil), } @@ -15101,7 +15882,7 @@ func file_api_service_v1alpha1_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_service_v1alpha1_service_proto_rawDesc, NumEnums: 1, - NumMessages: 181, + NumMessages: 188, NumExtensions: 0, NumServices: 1, }, diff --git a/api/service/v1alpha1/service.proto b/api/service/v1alpha1/service.proto index 9671f72f8a..f0a262f5ec 100644 --- a/api/service/v1alpha1/service.proto +++ b/api/service/v1alpha1/service.proto @@ -5,6 +5,7 @@ package akuity.io.kargo.service.v1alpha1; import "google/protobuf/timestamp.proto"; import "api/v1alpha1/generated.proto"; import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "api/stubs/rollouts/v1alpha1/generated.proto"; import "api/rbac/v1alpha1/generated.proto"; import "google/protobuf/any.proto"; @@ -52,12 +53,21 @@ service KargoService { // ListStages retrieves all stages within a project. rpc ListStages(ListStagesRequest) returns (ListStagesResponse); + // ListStageSummaries retrieves a lightweight projection of Stages within a + // project, containing only the fields typically required to render list + // and graph views. Use GetStage to retrieve the full Stage resource when + // detail-level fields are needed. + rpc ListStageSummaries(ListStageSummariesRequest) returns (ListStageSummariesResponse); // ListImages returns available images and their usage across stages. rpc ListImages(ListImagesRequest) returns (ListImagesResponse); // GetStage retrieves details of a specific stage. rpc GetStage(GetStageRequest) returns (GetStageResponse); // WatchStages provides a streaming interface to monitor stage changes. rpc WatchStages(WatchStagesRequest) returns (stream WatchStagesResponse); + // WatchStageSummaries provides a streaming interface to monitor stage + // changes, returning the same lightweight projection as + // ListStageSummaries for each event. + rpc WatchStageSummaries(WatchStageSummariesRequest) returns (stream WatchStageSummariesResponse); // DeleteStage removes a stage from the system. rpc DeleteStage(DeleteStageRequest) returns (DeleteStageResponse); @@ -533,6 +543,110 @@ message DeleteStageRequest { message DeleteStageResponse { /* explicitly empty */ } + +// StageSummary is a lightweight projection of a Stage resource intended for +// use by clients rendering list or graph views of many stages. It omits +// heavy fields that are only needed when a single stage is inspected in +// detail (e.g. full FreightHistory beyond the current FreightCollection, +// PromotionTemplate step configuration, and Verification configuration). +message StageSummary { + // metadata contains the Stage's identity and Kubernetes object metadata. + optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + // spec contains the subset of StageSpec fields needed by list/graph views. + optional StageSpecSummary spec = 2; + // status contains the subset of StageStatus fields needed by list/graph views. + optional StageStatusSummary status = 3; +} + +// StageSpecSummary is the subset of StageSpec fields returned by +// ListStageSummaries. See StageSummary for the motivation. +message StageSpecSummary { + // shard is the name of the shard that the Stage belongs to, mirroring + // StageSpec.shard. + string shard = 1; + // requestedFreight mirrors StageSpec.requestedFreight. This is needed in + // full to render graph edges between Stages and their upstream sources. + repeated github.com.akuity.kargo.api.v1alpha1.FreightRequest requestedFreight = 2; + // promotionStepCount is the number of promotion steps defined in the + // Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. + // Use GetStage to retrieve the full step configuration. + int32 promotionStepCount = 3; + // hasVerification indicates whether the Stage defines a Verification. + // Use GetStage to retrieve the full Verification configuration. + bool hasVerification = 4; +} + +// StageStatusSummary is the subset of StageStatus fields returned by +// ListStageSummaries. See StageSummary for the motivation. +message StageStatusSummary { + // conditions mirrors StageStatus.conditions. + repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 1; + // lastHandledRefresh mirrors StageStatus.lastHandledRefresh. + string lastHandledRefresh = 2; + // currentFreight is the FreightCollection currently deployed to the Stage + // (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has + // been deployed. Use GetStage to retrieve the full FreightHistory. + optional github.com.akuity.kargo.api.v1alpha1.FreightCollection currentFreight = 3; + // currentPromotion mirrors StageStatus.currentPromotion. + optional github.com.akuity.kargo.api.v1alpha1.PromotionReference currentPromotion = 4; + // lastPromotion mirrors StageStatus.lastPromotion. + optional github.com.akuity.kargo.api.v1alpha1.PromotionReference lastPromotion = 5; + // health mirrors StageStatus.health. + optional github.com.akuity.kargo.api.v1alpha1.Health health = 6; + // observedGeneration mirrors StageStatus.observedGeneration. + int64 observedGeneration = 7; + // autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. + bool autoPromotionEnabled = 8; +} + +// ListStageSummariesRequest is the request for listing stage summaries +// within a project. +message ListStageSummariesRequest { + // project is the name of the project whose stage summaries should be listed. + string project = 1; + // freightOrigins is an optional list of Warehouse names. When non-empty, + // only Stages that request Freight originating from at least one of the + // named Warehouses (directly or transitively via upstream Stages) will be + // returned. Mirrors ListStagesRequest.freightOrigins. + repeated string freightOrigins = 2; +} + +// ListStageSummariesResponse contains a list of stage summaries within a project. +message ListStageSummariesResponse { + // stageSummaries is the list of StageSummary objects found in the project. + repeated StageSummary stageSummaries = 1; + // resourceVersion is the Kubernetes ResourceVersion of the underlying + // StageList. Clients may pass this value to WatchStageSummaries to begin + // watching from the exact point this list was taken, receiving only + // subsequent changes without redundant initial events. + string resourceVersion = 2; +} + +// WatchStageSummariesRequest is the request for watching stage summaries via streaming. +message WatchStageSummariesRequest { + // project is the name of the project whose stage summaries should be watched. + string project = 1; + // name is the name of a specific stage to watch, if empty all stages in the project are watched. + string name = 2; + // freightOrigins is an optional list of Warehouse names. When non-empty, + // only events for Stages that request Freight originating from at least + // one of the named Warehouses (directly or transitively via upstream + // Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. + repeated string freightOrigins = 3; + // resourceVersion is an optional Kubernetes ResourceVersion. When set, + // the watch begins at the specified version, allowing clients to resume + // from a prior list or watch without missing or duplicating events. + string resourceVersion = 4; +} + +// WatchStageSummariesResponse contains stage summary change notifications. +message WatchStageSummariesResponse { + // stageSummary is the StageSummary for the Stage that changed. + optional StageSummary stageSummary = 1; + // type indicates the type of change (ADDED, MODIFIED, DELETED). + string type = 2; +} + /* ClusterConfig Messages */ message GetClusterConfigRequest { diff --git a/api/service/v1alpha1/svcv1alpha1connect/service.connect.go b/api/service/v1alpha1/svcv1alpha1connect/service.connect.go index 1d70586252..e9f7b04d22 100644 --- a/api/service/v1alpha1/svcv1alpha1connect/service.connect.go +++ b/api/service/v1alpha1/svcv1alpha1connect/service.connect.go @@ -60,6 +60,9 @@ const ( KargoServiceRefreshResourceProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/RefreshResource" // KargoServiceListStagesProcedure is the fully-qualified name of the KargoService's ListStages RPC. KargoServiceListStagesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListStages" + // KargoServiceListStageSummariesProcedure is the fully-qualified name of the KargoService's + // ListStageSummaries RPC. + KargoServiceListStageSummariesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListStageSummaries" // KargoServiceListImagesProcedure is the fully-qualified name of the KargoService's ListImages RPC. KargoServiceListImagesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListImages" // KargoServiceGetStageProcedure is the fully-qualified name of the KargoService's GetStage RPC. @@ -67,6 +70,9 @@ const ( // KargoServiceWatchStagesProcedure is the fully-qualified name of the KargoService's WatchStages // RPC. KargoServiceWatchStagesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/WatchStages" + // KargoServiceWatchStageSummariesProcedure is the fully-qualified name of the KargoService's + // WatchStageSummaries RPC. + KargoServiceWatchStageSummariesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/WatchStageSummaries" // KargoServiceDeleteStageProcedure is the fully-qualified name of the KargoService's DeleteStage // RPC. KargoServiceDeleteStageProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/DeleteStage" @@ -273,9 +279,11 @@ var ( kargoServiceDeleteResourceMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("DeleteResource") kargoServiceRefreshResourceMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("RefreshResource") kargoServiceListStagesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("ListStages") + kargoServiceListStageSummariesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("ListStageSummaries") kargoServiceListImagesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("ListImages") kargoServiceGetStageMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("GetStage") kargoServiceWatchStagesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("WatchStages") + kargoServiceWatchStageSummariesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("WatchStageSummaries") kargoServiceDeleteStageMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("DeleteStage") kargoServiceGetClusterConfigMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("GetClusterConfig") kargoServiceDeleteClusterConfigMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("DeleteClusterConfig") @@ -369,12 +377,21 @@ type KargoServiceClient interface { RefreshResource(context.Context, *connect.Request[v1alpha1.RefreshResourceRequest]) (*connect.Response[v1alpha1.RefreshResourceResponse], error) // ListStages retrieves all stages within a project. ListStages(context.Context, *connect.Request[v1alpha1.ListStagesRequest]) (*connect.Response[v1alpha1.ListStagesResponse], error) + // ListStageSummaries retrieves a lightweight projection of Stages within a + // project, containing only the fields typically required to render list + // and graph views. Use GetStage to retrieve the full Stage resource when + // detail-level fields are needed. + ListStageSummaries(context.Context, *connect.Request[v1alpha1.ListStageSummariesRequest]) (*connect.Response[v1alpha1.ListStageSummariesResponse], error) // ListImages returns available images and their usage across stages. ListImages(context.Context, *connect.Request[v1alpha1.ListImagesRequest]) (*connect.Response[v1alpha1.ListImagesResponse], error) // GetStage retrieves details of a specific stage. GetStage(context.Context, *connect.Request[v1alpha1.GetStageRequest]) (*connect.Response[v1alpha1.GetStageResponse], error) // WatchStages provides a streaming interface to monitor stage changes. WatchStages(context.Context, *connect.Request[v1alpha1.WatchStagesRequest]) (*connect.ServerStreamForClient[v1alpha1.WatchStagesResponse], error) + // WatchStageSummaries provides a streaming interface to monitor stage + // changes, returning the same lightweight projection as + // ListStageSummaries for each event. + WatchStageSummaries(context.Context, *connect.Request[v1alpha1.WatchStageSummariesRequest]) (*connect.ServerStreamForClient[v1alpha1.WatchStageSummariesResponse], error) // DeleteStage removes a stage from the system. DeleteStage(context.Context, *connect.Request[v1alpha1.DeleteStageRequest]) (*connect.Response[v1alpha1.DeleteStageResponse], error) // GetClusterConfig retrieves cluster-level configuration settings. @@ -596,6 +613,12 @@ func NewKargoServiceClient(httpClient connect.HTTPClient, baseURL string, opts . connect.WithSchema(kargoServiceListStagesMethodDescriptor), connect.WithClientOptions(opts...), ), + listStageSummaries: connect.NewClient[v1alpha1.ListStageSummariesRequest, v1alpha1.ListStageSummariesResponse]( + httpClient, + baseURL+KargoServiceListStageSummariesProcedure, + connect.WithSchema(kargoServiceListStageSummariesMethodDescriptor), + connect.WithClientOptions(opts...), + ), listImages: connect.NewClient[v1alpha1.ListImagesRequest, v1alpha1.ListImagesResponse]( httpClient, baseURL+KargoServiceListImagesProcedure, @@ -614,6 +637,12 @@ func NewKargoServiceClient(httpClient connect.HTTPClient, baseURL string, opts . connect.WithSchema(kargoServiceWatchStagesMethodDescriptor), connect.WithClientOptions(opts...), ), + watchStageSummaries: connect.NewClient[v1alpha1.WatchStageSummariesRequest, v1alpha1.WatchStageSummariesResponse]( + httpClient, + baseURL+KargoServiceWatchStageSummariesProcedure, + connect.WithSchema(kargoServiceWatchStageSummariesMethodDescriptor), + connect.WithClientOptions(opts...), + ), deleteStage: connect.NewClient[v1alpha1.DeleteStageRequest, v1alpha1.DeleteStageResponse]( httpClient, baseURL+KargoServiceDeleteStageProcedure, @@ -1031,9 +1060,11 @@ type kargoServiceClient struct { deleteResource *connect.Client[v1alpha1.DeleteResourceRequest, v1alpha1.DeleteResourceResponse] refreshResource *connect.Client[v1alpha1.RefreshResourceRequest, v1alpha1.RefreshResourceResponse] listStages *connect.Client[v1alpha1.ListStagesRequest, v1alpha1.ListStagesResponse] + listStageSummaries *connect.Client[v1alpha1.ListStageSummariesRequest, v1alpha1.ListStageSummariesResponse] listImages *connect.Client[v1alpha1.ListImagesRequest, v1alpha1.ListImagesResponse] getStage *connect.Client[v1alpha1.GetStageRequest, v1alpha1.GetStageResponse] watchStages *connect.Client[v1alpha1.WatchStagesRequest, v1alpha1.WatchStagesResponse] + watchStageSummaries *connect.Client[v1alpha1.WatchStageSummariesRequest, v1alpha1.WatchStageSummariesResponse] deleteStage *connect.Client[v1alpha1.DeleteStageRequest, v1alpha1.DeleteStageResponse] getClusterConfig *connect.Client[v1alpha1.GetClusterConfigRequest, v1alpha1.GetClusterConfigResponse] deleteClusterConfig *connect.Client[v1alpha1.DeleteClusterConfigRequest, v1alpha1.DeleteClusterConfigResponse] @@ -1154,6 +1185,11 @@ func (c *kargoServiceClient) ListStages(ctx context.Context, req *connect.Reques return c.listStages.CallUnary(ctx, req) } +// ListStageSummaries calls akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries. +func (c *kargoServiceClient) ListStageSummaries(ctx context.Context, req *connect.Request[v1alpha1.ListStageSummariesRequest]) (*connect.Response[v1alpha1.ListStageSummariesResponse], error) { + return c.listStageSummaries.CallUnary(ctx, req) +} + // ListImages calls akuity.io.kargo.service.v1alpha1.KargoService.ListImages. func (c *kargoServiceClient) ListImages(ctx context.Context, req *connect.Request[v1alpha1.ListImagesRequest]) (*connect.Response[v1alpha1.ListImagesResponse], error) { return c.listImages.CallUnary(ctx, req) @@ -1169,6 +1205,11 @@ func (c *kargoServiceClient) WatchStages(ctx context.Context, req *connect.Reque return c.watchStages.CallServerStream(ctx, req) } +// WatchStageSummaries calls akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries. +func (c *kargoServiceClient) WatchStageSummaries(ctx context.Context, req *connect.Request[v1alpha1.WatchStageSummariesRequest]) (*connect.ServerStreamForClient[v1alpha1.WatchStageSummariesResponse], error) { + return c.watchStageSummaries.CallServerStream(ctx, req) +} + // DeleteStage calls akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage. func (c *kargoServiceClient) DeleteStage(ctx context.Context, req *connect.Request[v1alpha1.DeleteStageRequest]) (*connect.Response[v1alpha1.DeleteStageResponse], error) { return c.deleteStage.CallUnary(ctx, req) @@ -1539,12 +1580,21 @@ type KargoServiceHandler interface { RefreshResource(context.Context, *connect.Request[v1alpha1.RefreshResourceRequest]) (*connect.Response[v1alpha1.RefreshResourceResponse], error) // ListStages retrieves all stages within a project. ListStages(context.Context, *connect.Request[v1alpha1.ListStagesRequest]) (*connect.Response[v1alpha1.ListStagesResponse], error) + // ListStageSummaries retrieves a lightweight projection of Stages within a + // project, containing only the fields typically required to render list + // and graph views. Use GetStage to retrieve the full Stage resource when + // detail-level fields are needed. + ListStageSummaries(context.Context, *connect.Request[v1alpha1.ListStageSummariesRequest]) (*connect.Response[v1alpha1.ListStageSummariesResponse], error) // ListImages returns available images and their usage across stages. ListImages(context.Context, *connect.Request[v1alpha1.ListImagesRequest]) (*connect.Response[v1alpha1.ListImagesResponse], error) // GetStage retrieves details of a specific stage. GetStage(context.Context, *connect.Request[v1alpha1.GetStageRequest]) (*connect.Response[v1alpha1.GetStageResponse], error) // WatchStages provides a streaming interface to monitor stage changes. WatchStages(context.Context, *connect.Request[v1alpha1.WatchStagesRequest], *connect.ServerStream[v1alpha1.WatchStagesResponse]) error + // WatchStageSummaries provides a streaming interface to monitor stage + // changes, returning the same lightweight projection as + // ListStageSummaries for each event. + WatchStageSummaries(context.Context, *connect.Request[v1alpha1.WatchStageSummariesRequest], *connect.ServerStream[v1alpha1.WatchStageSummariesResponse]) error // DeleteStage removes a stage from the system. DeleteStage(context.Context, *connect.Request[v1alpha1.DeleteStageRequest]) (*connect.Response[v1alpha1.DeleteStageResponse], error) // GetClusterConfig retrieves cluster-level configuration settings. @@ -1762,6 +1812,12 @@ func NewKargoServiceHandler(svc KargoServiceHandler, opts ...connect.HandlerOpti connect.WithSchema(kargoServiceListStagesMethodDescriptor), connect.WithHandlerOptions(opts...), ) + kargoServiceListStageSummariesHandler := connect.NewUnaryHandler( + KargoServiceListStageSummariesProcedure, + svc.ListStageSummaries, + connect.WithSchema(kargoServiceListStageSummariesMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) kargoServiceListImagesHandler := connect.NewUnaryHandler( KargoServiceListImagesProcedure, svc.ListImages, @@ -1780,6 +1836,12 @@ func NewKargoServiceHandler(svc KargoServiceHandler, opts ...connect.HandlerOpti connect.WithSchema(kargoServiceWatchStagesMethodDescriptor), connect.WithHandlerOptions(opts...), ) + kargoServiceWatchStageSummariesHandler := connect.NewServerStreamHandler( + KargoServiceWatchStageSummariesProcedure, + svc.WatchStageSummaries, + connect.WithSchema(kargoServiceWatchStageSummariesMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) kargoServiceDeleteStageHandler := connect.NewUnaryHandler( KargoServiceDeleteStageProcedure, svc.DeleteStage, @@ -2204,12 +2266,16 @@ func NewKargoServiceHandler(svc KargoServiceHandler, opts ...connect.HandlerOpti kargoServiceRefreshResourceHandler.ServeHTTP(w, r) case KargoServiceListStagesProcedure: kargoServiceListStagesHandler.ServeHTTP(w, r) + case KargoServiceListStageSummariesProcedure: + kargoServiceListStageSummariesHandler.ServeHTTP(w, r) case KargoServiceListImagesProcedure: kargoServiceListImagesHandler.ServeHTTP(w, r) case KargoServiceGetStageProcedure: kargoServiceGetStageHandler.ServeHTTP(w, r) case KargoServiceWatchStagesProcedure: kargoServiceWatchStagesHandler.ServeHTTP(w, r) + case KargoServiceWatchStageSummariesProcedure: + kargoServiceWatchStageSummariesHandler.ServeHTTP(w, r) case KargoServiceDeleteStageProcedure: kargoServiceDeleteStageHandler.ServeHTTP(w, r) case KargoServiceGetClusterConfigProcedure: @@ -2393,6 +2459,10 @@ func (UnimplementedKargoServiceHandler) ListStages(context.Context, *connect.Req return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.ListStages is not implemented")) } +func (UnimplementedKargoServiceHandler) ListStageSummaries(context.Context, *connect.Request[v1alpha1.ListStageSummariesRequest]) (*connect.Response[v1alpha1.ListStageSummariesResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries is not implemented")) +} + func (UnimplementedKargoServiceHandler) ListImages(context.Context, *connect.Request[v1alpha1.ListImagesRequest]) (*connect.Response[v1alpha1.ListImagesResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.ListImages is not implemented")) } @@ -2405,6 +2475,10 @@ func (UnimplementedKargoServiceHandler) WatchStages(context.Context, *connect.Re return connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.WatchStages is not implemented")) } +func (UnimplementedKargoServiceHandler) WatchStageSummaries(context.Context, *connect.Request[v1alpha1.WatchStageSummariesRequest], *connect.ServerStream[v1alpha1.WatchStageSummariesResponse]) error { + return connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries is not implemented")) +} + func (UnimplementedKargoServiceHandler) DeleteStage(context.Context, *connect.Request[v1alpha1.DeleteStageRequest]) (*connect.Response[v1alpha1.DeleteStageResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage is not implemented")) } diff --git a/docs/docs/90-api-documentation.md b/docs/docs/90-api-documentation.md index 467440f6bb..4577b89e25 100644 --- a/docs/docs/90-api-documentation.md +++ b/docs/docs/90-api-documentation.md @@ -25,9 +25,11 @@ Stability is not guaranteed. | DeleteResource | [DeleteResourceRequest](#akuity-io-kargo-service-v1alpha1-DeleteResourceRequest) | [DeleteResourceResponse](#akuity-io-kargo-service-v1alpha1-DeleteResourceResponse) | | RefreshResource | [RefreshResourceRequest](#akuity-io-kargo-service-v1alpha1-RefreshResourceRequest) | [RefreshResourceResponse](#akuity-io-kargo-service-v1alpha1-RefreshResourceResponse) | | ListStages | [ListStagesRequest](#akuity-io-kargo-service-v1alpha1-ListStagesRequest) | [ListStagesResponse](#akuity-io-kargo-service-v1alpha1-ListStagesResponse) | +| ListStageSummaries | [ListStageSummariesRequest](#akuity-io-kargo-service-v1alpha1-ListStageSummariesRequest) | [ListStageSummariesResponse](#akuity-io-kargo-service-v1alpha1-ListStageSummariesResponse) | | ListImages | [ListImagesRequest](#akuity-io-kargo-service-v1alpha1-ListImagesRequest) | [ListImagesResponse](#akuity-io-kargo-service-v1alpha1-ListImagesResponse) | | GetStage | [GetStageRequest](#akuity-io-kargo-service-v1alpha1-GetStageRequest) | [GetStageResponse](#akuity-io-kargo-service-v1alpha1-GetStageResponse) | | WatchStages | [WatchStagesRequest](#akuity-io-kargo-service-v1alpha1-WatchStagesRequest) | [WatchStagesResponse](#akuity-io-kargo-service-v1alpha1-WatchStagesResponse)(stream) | +| WatchStageSummaries | [WatchStageSummariesRequest](#akuity-io-kargo-service-v1alpha1-WatchStageSummariesRequest) | [WatchStageSummariesResponse](#akuity-io-kargo-service-v1alpha1-WatchStageSummariesResponse)(stream) | | DeleteStage | [DeleteStageRequest](#akuity-io-kargo-service-v1alpha1-DeleteStageRequest) | [DeleteStageResponse](#akuity-io-kargo-service-v1alpha1-DeleteStageResponse) | | GetClusterConfig | [GetClusterConfigRequest](#akuity-io-kargo-service-v1alpha1-GetClusterConfigRequest) | [GetClusterConfigResponse](#akuity-io-kargo-service-v1alpha1-GetClusterConfigResponse) | | DeleteClusterConfig | [DeleteClusterConfigRequest](#akuity-io-kargo-service-v1alpha1-DeleteClusterConfigRequest) | [DeleteClusterConfigResponse](#akuity-io-kargo-service-v1alpha1-DeleteClusterConfigResponse) | @@ -1177,6 +1179,24 @@ Stability is not guaranteed. | roles | [github.com.akuity.kargo.api.rbac.v1alpha1.Role](#github-com-akuity-kargo-api-rbac-v1alpha1-Role) | Note: oneof and repeated do not work together roles is a list of Kargo Role virtual resources. | | resources | [github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources](#github-com-akuity-kargo-api-rbac-v1alpha1-RoleResources) | resources is a list of RoleResource objects encapsulating the Kargo Roles' underlying Kubernetes resources. | + + +### ListStageSummariesRequest + ListStageSummariesRequest is the request for listing stage summaries within a project. +| Field | Type | Description | +| ----- | ---- | ----------- | +| project | [string](#string) | project is the name of the project whose stage summaries should be listed. | +| freightOrigins | [string](#string) | freightOrigins is an optional list of Warehouse names. When non-empty, only Stages that request Freight originating from at least one of the named Warehouses (directly or transitively via upstream Stages) will be returned. Mirrors ListStagesRequest.freightOrigins. | + + + +### ListStageSummariesResponse + ListStageSummariesResponse contains a list of stage summaries within a project. +| Field | Type | Description | +| ----- | ---- | ----------- | +| stageSummaries | [StageSummary](#akuity-io-kargo-service-v1alpha1-StageSummary) | stageSummaries is the list of StageSummary objects found in the project. | +| resourceVersion | [string](#string) | resourceVersion is the Kubernetes ResourceVersion of the underlying StageList. Clients may pass this value to WatchStageSummaries to begin watching from the exact point this list was taken, receiving only subsequent changes without redundant initial events. | + ### ListStagesRequest @@ -1339,6 +1359,42 @@ Stability is not guaranteed. | ----- | ---- | ----------- | | role | [github.com.akuity.kargo.api.rbac.v1alpha1.Role](#github-com-akuity-kargo-api-rbac-v1alpha1-Role) | role is the Kargo Role virtual resource that was the subject of the revocation. | + + +### StageSpecSummary + StageSpecSummary is the subset of StageSpec fields returned by ListStageSummaries. See StageSummary for the motivation. +| Field | Type | Description | +| ----- | ---- | ----------- | +| shard | [string](#string) | shard is the name of the shard that the Stage belongs to, mirroring StageSpec.shard. | +| requestedFreight | [github.com.akuity.kargo.api.v1alpha1.FreightRequest](#github-com-akuity-kargo-api-v1alpha1-FreightRequest) | requestedFreight mirrors StageSpec.requestedFreight. This is needed in full to render graph edges between Stages and their upstream sources. | +| promotionStepCount | [int32](#int32) | promotionStepCount is the number of promotion steps defined in the Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. Use GetStage to retrieve the full step configuration. | +| hasVerification | [bool](#bool) | hasVerification indicates whether the Stage defines a Verification. Use GetStage to retrieve the full Verification configuration. | + + + +### StageStatusSummary + StageStatusSummary is the subset of StageStatus fields returned by ListStageSummaries. See StageSummary for the motivation. +| Field | Type | Description | +| ----- | ---- | ----------- | +| conditions | k8s.io.apimachinery.pkg.apis.meta.v1.Condition | conditions mirrors StageStatus.conditions. | +| lastHandledRefresh | [string](#string) | lastHandledRefresh mirrors StageStatus.lastHandledRefresh. | +| currentFreight | [github.com.akuity.kargo.api.v1alpha1.FreightCollection](#github-com-akuity-kargo-api-v1alpha1-FreightCollection) | currentFreight is the FreightCollection currently deployed to the Stage (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has been deployed. Use GetStage to retrieve the full FreightHistory. | +| currentPromotion | [github.com.akuity.kargo.api.v1alpha1.PromotionReference](#github-com-akuity-kargo-api-v1alpha1-PromotionReference) | currentPromotion mirrors StageStatus.currentPromotion. | +| lastPromotion | [github.com.akuity.kargo.api.v1alpha1.PromotionReference](#github-com-akuity-kargo-api-v1alpha1-PromotionReference) | lastPromotion mirrors StageStatus.lastPromotion. | +| health | [github.com.akuity.kargo.api.v1alpha1.Health](#github-com-akuity-kargo-api-v1alpha1-Health) | health mirrors StageStatus.health. | +| observedGeneration | [int64](#int64) | observedGeneration mirrors StageStatus.observedGeneration. | +| autoPromotionEnabled | [bool](#bool) | autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. | + + + +### StageSummary + StageSummary is a lightweight projection of a Stage resource intended for use by clients rendering list or graph views of many stages. It omits heavy fields that are only needed when a single stage is inspected in detail (e.g. full FreightHistory beyond the current FreightCollection, PromotionTemplate step configuration, and Verification configuration). +| Field | Type | Description | +| ----- | ---- | ----------- | +| metadata | k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta | metadata contains the Stage's identity and Kubernetes object metadata. | +| spec | [StageSpecSummary](#akuity-io-kargo-service-v1alpha1-StageSpecSummary) | spec contains the subset of StageSpec fields needed by list/graph views. | +| status | [StageStatusSummary](#akuity-io-kargo-service-v1alpha1-StageStatusSummary) | status contains the subset of StageStatus fields needed by list/graph views. | + ### TagMap @@ -1592,6 +1648,26 @@ Stability is not guaranteed. | promotion | [github.com.akuity.kargo.api.v1alpha1.Promotion](#github-com-akuity-kargo-api-v1alpha1-Promotion) | promotion is the Promotion resource that changed. | | type | [string](#string) | type indicates the type of change (ADDED, MODIFIED, DELETED). | + + +### WatchStageSummariesRequest + WatchStageSummariesRequest is the request for watching stage summaries via streaming. +| Field | Type | Description | +| ----- | ---- | ----------- | +| project | [string](#string) | project is the name of the project whose stage summaries should be watched. | +| name | [string](#string) | name is the name of a specific stage to watch, if empty all stages in the project are watched. | +| freightOrigins | [string](#string) | freightOrigins is an optional list of Warehouse names. When non-empty, only events for Stages that request Freight originating from at least one of the named Warehouses (directly or transitively via upstream Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. | +| resourceVersion | [string](#string) | resourceVersion is an optional Kubernetes ResourceVersion. When set, the watch begins at the specified version, allowing clients to resume from a prior list or watch without missing or duplicating events. | + + + +### WatchStageSummariesResponse + WatchStageSummariesResponse contains stage summary change notifications. +| Field | Type | Description | +| ----- | ---- | ----------- | +| stageSummary | [StageSummary](#akuity-io-kargo-service-v1alpha1-StageSummary) | stageSummary is the StageSummary for the Stage that changed. | +| type | [string](#string) | type indicates the type of change (ADDED, MODIFIED, DELETED). | + ### WatchStagesRequest diff --git a/pkg/client/generated/core/core_client.go b/pkg/client/generated/core/core_client.go index d71e50fe9c..dc26c47444 100644 --- a/pkg/client/generated/core/core_client.go +++ b/pkg/client/generated/core/core_client.go @@ -115,6 +115,8 @@ type ClientService interface { ListSharedConfigMaps(params *ListSharedConfigMapsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*ListSharedConfigMapsOK, error) + ListStageSummaries(params *ListStageSummariesParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*ListStageSummariesOK, error) + ListStages(params *ListStagesParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*ListStagesOK, error) ListSystemConfigMaps(params *ListSystemConfigMapsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*ListSystemConfigMapsOK, error) @@ -1604,6 +1606,57 @@ func (a *Client) ListSharedConfigMaps(params *ListSharedConfigMapsParams, authIn panic(msg) } +/* + ListStageSummaries lists stage summaries + + List a lightweight projection of Stage resources from a + +project's namespace. Intended for UI list and graph views that +need metadata and current state for many Stages at once but do +not need full FreightHistory, PromotionTemplate steps, or +Verification configuration. Use GetStage for detail fields. +*/ +func (a *Client) ListStageSummaries(params *ListStageSummariesParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*ListStageSummariesOK, error) { + // NOTE: parameters are not validated before sending + if params == nil { + params = NewListStageSummariesParams() + } + op := &runtime.ClientOperation{ + ID: "ListStageSummaries", + Method: "GET", + PathPattern: "/v1beta1/projects/{project}/stage-summaries", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &ListStageSummariesReader{formats: a.formats}, + AuthInfo: authInfo, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + + // only one success response has to be checked + success, ok := result.(*ListStageSummariesOK) + if ok { + return success, nil + } + + // unexpected success response. + + // no default response is defined. + // + // safeguard: normally, in the absence of a default response, unknown success responses return an error above: so this is a codegen issue + msg := fmt.Sprintf("unexpected success response for ListStageSummaries: API contract not enforced by server. Client expected to get an error, but got: %T", result) + panic(msg) +} + /* ListStages lists stages diff --git a/pkg/client/generated/core/list_stage_summaries_parameters.go b/pkg/client/generated/core/list_stage_summaries_parameters.go new file mode 100644 index 0000000000..5730c2d619 --- /dev/null +++ b/pkg/client/generated/core/list_stage_summaries_parameters.go @@ -0,0 +1,194 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package core + +import ( + "context" + "net/http" + "time" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// NewListStageSummariesParams creates a new ListStageSummariesParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. +func NewListStageSummariesParams() *ListStageSummariesParams { + return &ListStageSummariesParams{ + timeout: cr.DefaultTimeout, + } +} + +// NewListStageSummariesParamsWithTimeout creates a new ListStageSummariesParams object +// with the ability to set a timeout on a request. +func NewListStageSummariesParamsWithTimeout(timeout time.Duration) *ListStageSummariesParams { + return &ListStageSummariesParams{ + timeout: timeout, + } +} + +// NewListStageSummariesParamsWithContext creates a new ListStageSummariesParams object +// with the ability to set a context for a request. +func NewListStageSummariesParamsWithContext(ctx context.Context) *ListStageSummariesParams { + return &ListStageSummariesParams{ + Context: ctx, + } +} + +// NewListStageSummariesParamsWithHTTPClient creates a new ListStageSummariesParams object +// with the ability to set a custom HTTPClient for a request. +func NewListStageSummariesParamsWithHTTPClient(client *http.Client) *ListStageSummariesParams { + return &ListStageSummariesParams{ + HTTPClient: client, + } +} + +/* +ListStageSummariesParams contains all the parameters to send to the API endpoint + + for the list stage summaries operation. + + Typically these are written to a http.Request. +*/ +type ListStageSummariesParams struct { + + /* FreightOrigins. + + Warehouse name(s) to filter by + */ + FreightOrigins []string + + /* Project. + + Project name + */ + Project string + + timeout time.Duration + Context context.Context + HTTPClient *http.Client +} + +// WithDefaults hydrates default values in the list stage summaries params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ListStageSummariesParams) WithDefaults() *ListStageSummariesParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the list stage summaries params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ListStageSummariesParams) SetDefaults() { + // no default values defined for this parameter +} + +// WithTimeout adds the timeout to the list stage summaries params +func (o *ListStageSummariesParams) WithTimeout(timeout time.Duration) *ListStageSummariesParams { + o.SetTimeout(timeout) + return o +} + +// SetTimeout adds the timeout to the list stage summaries params +func (o *ListStageSummariesParams) SetTimeout(timeout time.Duration) { + o.timeout = timeout +} + +// WithContext adds the context to the list stage summaries params +func (o *ListStageSummariesParams) WithContext(ctx context.Context) *ListStageSummariesParams { + o.SetContext(ctx) + return o +} + +// SetContext adds the context to the list stage summaries params +func (o *ListStageSummariesParams) SetContext(ctx context.Context) { + o.Context = ctx +} + +// WithHTTPClient adds the HTTPClient to the list stage summaries params +func (o *ListStageSummariesParams) WithHTTPClient(client *http.Client) *ListStageSummariesParams { + o.SetHTTPClient(client) + return o +} + +// SetHTTPClient adds the HTTPClient to the list stage summaries params +func (o *ListStageSummariesParams) SetHTTPClient(client *http.Client) { + o.HTTPClient = client +} + +// WithFreightOrigins adds the freightOrigins to the list stage summaries params +func (o *ListStageSummariesParams) WithFreightOrigins(freightOrigins []string) *ListStageSummariesParams { + o.SetFreightOrigins(freightOrigins) + return o +} + +// SetFreightOrigins adds the freightOrigins to the list stage summaries params +func (o *ListStageSummariesParams) SetFreightOrigins(freightOrigins []string) { + o.FreightOrigins = freightOrigins +} + +// WithProject adds the project to the list stage summaries params +func (o *ListStageSummariesParams) WithProject(project string) *ListStageSummariesParams { + o.SetProject(project) + return o +} + +// SetProject adds the project to the list stage summaries params +func (o *ListStageSummariesParams) SetProject(project string) { + o.Project = project +} + +// WriteToRequest writes these params to a swagger request +func (o *ListStageSummariesParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { + + if err := r.SetTimeout(o.timeout); err != nil { + return err + } + var res []error + + if o.FreightOrigins != nil { + + // binding items for freightOrigins + joinedFreightOrigins := o.bindParamFreightOrigins(reg) + + // query array param freightOrigins + if err := r.SetQueryParam("freightOrigins", joinedFreightOrigins...); err != nil { + return err + } + } + + // path param project + if err := r.SetPathParam("project", o.Project); err != nil { + return err + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +// bindParamListStageSummaries binds the parameter freightOrigins +func (o *ListStageSummariesParams) bindParamFreightOrigins(formats strfmt.Registry) []string { + freightOriginsIR := o.FreightOrigins + + var freightOriginsIC []string + for _, freightOriginsIIR := range freightOriginsIR { // explode []string + + freightOriginsIIV := freightOriginsIIR // string as string + freightOriginsIC = append(freightOriginsIC, freightOriginsIIV) + } + + // items.CollectionFormat: "multi" + freightOriginsIS := swag.JoinByFormat(freightOriginsIC, "multi") + + return freightOriginsIS +} diff --git a/pkg/client/generated/core/list_stage_summaries_responses.go b/pkg/client/generated/core/list_stage_summaries_responses.go new file mode 100644 index 0000000000..e364566375 --- /dev/null +++ b/pkg/client/generated/core/list_stage_summaries_responses.go @@ -0,0 +1,104 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package core + +import ( + "encoding/json" + stderrors "errors" + "fmt" + "io" + + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + + "github.com/akuity/kargo/pkg/client/generated/models" +) + +// ListStageSummariesReader is a Reader for the ListStageSummaries structure. +type ListStageSummariesReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ListStageSummariesReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (any, error) { + switch response.Code() { + case 200: + result := NewListStageSummariesOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + return nil, runtime.NewAPIError("[GET /v1beta1/projects/{project}/stage-summaries] ListStageSummaries", response, response.Code()) + } +} + +// NewListStageSummariesOK creates a ListStageSummariesOK with default headers values +func NewListStageSummariesOK() *ListStageSummariesOK { + return &ListStageSummariesOK{} +} + +/* +ListStageSummariesOK describes a response with status code 200, with default header values. + +OK +*/ +type ListStageSummariesOK struct { + Payload *models.GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse +} + +// IsSuccess returns true when this list stage summaries o k response has a 2xx status code +func (o *ListStageSummariesOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this list stage summaries o k response has a 3xx status code +func (o *ListStageSummariesOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this list stage summaries o k response has a 4xx status code +func (o *ListStageSummariesOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this list stage summaries o k response has a 5xx status code +func (o *ListStageSummariesOK) IsServerError() bool { + return false +} + +// IsCode returns true when this list stage summaries o k response a status code equal to that given +func (o *ListStageSummariesOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the list stage summaries o k response +func (o *ListStageSummariesOK) Code() int { + return 200 +} + +func (o *ListStageSummariesOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1beta1/projects/{project}/stage-summaries][%d] listStageSummariesOK %s", 200, payload) +} + +func (o *ListStageSummariesOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1beta1/projects/{project}/stage-summaries][%d] listStageSummariesOK %s", 200, payload) +} + +func (o *ListStageSummariesOK) GetPayload() *models.GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse { + return o.Payload +} + +func (o *ListStageSummariesOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && !stderrors.Is(err, io.EOF) { + return err + } + + return nil +} diff --git a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_list_stage_summaries_response.go b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_list_stage_summaries_response.go new file mode 100644 index 0000000000..c7bd6a0bef --- /dev/null +++ b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_list_stage_summaries_response.go @@ -0,0 +1,133 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +import ( + "context" + stderrors "errors" + "strconv" + + "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse github com akuity kargo api service v1alpha1 list stage summaries response +// +// swagger:model github_com_akuity_kargo_api_service_v1alpha1.ListStageSummariesResponse +type GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse struct { + + // resourceVersion is the Kubernetes ResourceVersion of the underlying + // StageList. Clients may pass this value to WatchStageSummaries to begin + // watching from the exact point this list was taken, receiving only + // subsequent changes without redundant initial events. + ResourceVersion string `json:"resourceVersion,omitempty"` + + // stageSummaries is the list of StageSummary objects found in the project. + StageSummaries []*GithubComAkuityKargoAPIServiceV1alpha1StageSummary `json:"stageSummaries"` +} + +// Validate validates this github com akuity kargo api service v1alpha1 list stage summaries response +func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) Validate(formats strfmt.Registry) error { + var res []error + + if err := m.validateStageSummaries(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) validateStageSummaries(formats strfmt.Registry) error { + if swag.IsZero(m.StageSummaries) { // not required + return nil + } + + for i := 0; i < len(m.StageSummaries); i++ { + if swag.IsZero(m.StageSummaries[i]) { // not required + continue + } + + if m.StageSummaries[i] != nil { + if err := m.StageSummaries[i].Validate(formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("stageSummaries" + "." + strconv.Itoa(i)) + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("stageSummaries" + "." + strconv.Itoa(i)) + } + + return err + } + } + + } + + return nil +} + +// ContextValidate validate this github com akuity kargo api service v1alpha1 list stage summaries response based on the context it is used +func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateStageSummaries(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) contextValidateStageSummaries(ctx context.Context, formats strfmt.Registry) error { + + for i := 0; i < len(m.StageSummaries); i++ { + + if m.StageSummaries[i] != nil { + + if swag.IsZero(m.StageSummaries[i]) { // not required + return nil + } + + if err := m.StageSummaries[i].ContextValidate(ctx, formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("stageSummaries" + "." + strconv.Itoa(i)) + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("stageSummaries" + "." + strconv.Itoa(i)) + } + + return err + } + } + + } + + return nil +} + +// MarshalBinary interface implementation +func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) UnmarshalBinary(b []byte) error { + var res GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_spec_summary.go b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_spec_summary.go new file mode 100644 index 0000000000..4098726b3c --- /dev/null +++ b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_spec_summary.go @@ -0,0 +1,141 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +import ( + "context" + stderrors "errors" + "strconv" + + "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary github com akuity kargo api service v1alpha1 stage spec summary +// +// swagger:model github_com_akuity_kargo_api_service_v1alpha1.StageSpecSummary +type GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary struct { + + // hasVerification indicates whether the Stage defines a Verification. + // Use GetStage to retrieve the full Verification configuration. + HasVerification bool `json:"hasVerification,omitempty"` + + // promotionStepCount is the number of promotion steps defined in the + // Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. + // Use GetStage to retrieve the full step configuration. + PromotionStepCount int64 `json:"promotionStepCount,omitempty"` + + // requestedFreight mirrors StageSpec.requestedFreight. This is needed in + // full to render graph edges between Stages and their upstream sources. + RequestedFreight []*FreightRequest `json:"requestedFreight"` + + // shard is the name of the shard that the Stage belongs to, mirroring + // StageSpec.shard. + Shard string `json:"shard,omitempty"` +} + +// Validate validates this github com akuity kargo api service v1alpha1 stage spec summary +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) Validate(formats strfmt.Registry) error { + var res []error + + if err := m.validateRequestedFreight(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) validateRequestedFreight(formats strfmt.Registry) error { + if swag.IsZero(m.RequestedFreight) { // not required + return nil + } + + for i := 0; i < len(m.RequestedFreight); i++ { + if swag.IsZero(m.RequestedFreight[i]) { // not required + continue + } + + if m.RequestedFreight[i] != nil { + if err := m.RequestedFreight[i].Validate(formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("requestedFreight" + "." + strconv.Itoa(i)) + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("requestedFreight" + "." + strconv.Itoa(i)) + } + + return err + } + } + + } + + return nil +} + +// ContextValidate validate this github com akuity kargo api service v1alpha1 stage spec summary based on the context it is used +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateRequestedFreight(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) contextValidateRequestedFreight(ctx context.Context, formats strfmt.Registry) error { + + for i := 0; i < len(m.RequestedFreight); i++ { + + if m.RequestedFreight[i] != nil { + + if swag.IsZero(m.RequestedFreight[i]) { // not required + return nil + } + + if err := m.RequestedFreight[i].ContextValidate(ctx, formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("requestedFreight" + "." + strconv.Itoa(i)) + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("requestedFreight" + "." + strconv.Itoa(i)) + } + + return err + } + } + + } + + return nil +} + +// MarshalBinary interface implementation +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) UnmarshalBinary(b []byte) error { + var res GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_status_summary.go b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_status_summary.go new file mode 100644 index 0000000000..90e7446065 --- /dev/null +++ b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_status_summary.go @@ -0,0 +1,242 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +import ( + "context" + stderrors "errors" + "strconv" + + "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary github com akuity kargo api service v1alpha1 stage status summary +// +// swagger:model github_com_akuity_kargo_api_service_v1alpha1.StageStatusSummary +type GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary struct { + + // autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. + AutoPromotionEnabled bool `json:"autoPromotionEnabled,omitempty"` + + // conditions mirrors StageStatus.conditions. + Conditions []*V1Condition `json:"conditions"` + + // currentFreight is the FreightCollection currently deployed to the Stage + // (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has + // been deployed. Use GetStage to retrieve the full FreightHistory. + CurrentFreight struct { + FreightCollection + } `json:"currentFreight,omitempty"` + + // currentPromotion mirrors StageStatus.currentPromotion. + CurrentPromotion struct { + PromotionReference + } `json:"currentPromotion,omitempty"` + + // health mirrors StageStatus.health. + Health struct { + Health + } `json:"health,omitempty"` + + // lastHandledRefresh mirrors StageStatus.lastHandledRefresh. + LastHandledRefresh string `json:"lastHandledRefresh,omitempty"` + + // lastPromotion mirrors StageStatus.lastPromotion. + LastPromotion struct { + PromotionReference + } `json:"lastPromotion,omitempty"` + + // observedGeneration mirrors StageStatus.observedGeneration. + ObservedGeneration int64 `json:"observedGeneration,omitempty"` +} + +// Validate validates this github com akuity kargo api service v1alpha1 stage status summary +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) Validate(formats strfmt.Registry) error { + var res []error + + if err := m.validateConditions(formats); err != nil { + res = append(res, err) + } + + if err := m.validateCurrentFreight(formats); err != nil { + res = append(res, err) + } + + if err := m.validateCurrentPromotion(formats); err != nil { + res = append(res, err) + } + + if err := m.validateHealth(formats); err != nil { + res = append(res, err) + } + + if err := m.validateLastPromotion(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) validateConditions(formats strfmt.Registry) error { + if swag.IsZero(m.Conditions) { // not required + return nil + } + + for i := 0; i < len(m.Conditions); i++ { + if swag.IsZero(m.Conditions[i]) { // not required + continue + } + + if m.Conditions[i] != nil { + if err := m.Conditions[i].Validate(formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("conditions" + "." + strconv.Itoa(i)) + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("conditions" + "." + strconv.Itoa(i)) + } + + return err + } + } + + } + + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) validateCurrentFreight(formats strfmt.Registry) error { + if swag.IsZero(m.CurrentFreight) { // not required + return nil + } + + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) validateCurrentPromotion(formats strfmt.Registry) error { + if swag.IsZero(m.CurrentPromotion) { // not required + return nil + } + + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) validateHealth(formats strfmt.Registry) error { + if swag.IsZero(m.Health) { // not required + return nil + } + + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) validateLastPromotion(formats strfmt.Registry) error { + if swag.IsZero(m.LastPromotion) { // not required + return nil + } + + return nil +} + +// ContextValidate validate this github com akuity kargo api service v1alpha1 stage status summary based on the context it is used +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateConditions(ctx, formats); err != nil { + res = append(res, err) + } + + if err := m.contextValidateCurrentFreight(ctx, formats); err != nil { + res = append(res, err) + } + + if err := m.contextValidateCurrentPromotion(ctx, formats); err != nil { + res = append(res, err) + } + + if err := m.contextValidateHealth(ctx, formats); err != nil { + res = append(res, err) + } + + if err := m.contextValidateLastPromotion(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) contextValidateConditions(ctx context.Context, formats strfmt.Registry) error { + + for i := 0; i < len(m.Conditions); i++ { + + if m.Conditions[i] != nil { + + if swag.IsZero(m.Conditions[i]) { // not required + return nil + } + + if err := m.Conditions[i].ContextValidate(ctx, formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("conditions" + "." + strconv.Itoa(i)) + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("conditions" + "." + strconv.Itoa(i)) + } + + return err + } + } + + } + + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) contextValidateCurrentFreight(ctx context.Context, formats strfmt.Registry) error { + + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) contextValidateCurrentPromotion(ctx context.Context, formats strfmt.Registry) error { + + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) contextValidateHealth(ctx context.Context, formats strfmt.Registry) error { + + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) contextValidateLastPromotion(ctx context.Context, formats strfmt.Registry) error { + + return nil +} + +// MarshalBinary interface implementation +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) UnmarshalBinary(b []byte) error { + var res GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_summary.go b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_summary.go new file mode 100644 index 0000000000..72fc952c77 --- /dev/null +++ b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_summary.go @@ -0,0 +1,133 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +import ( + "context" + + "github.com/go-openapi/errors" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GithubComAkuityKargoAPIServiceV1alpha1StageSummary github com akuity kargo api service v1alpha1 stage summary +// +// swagger:model github_com_akuity_kargo_api_service_v1alpha1.StageSummary +type GithubComAkuityKargoAPIServiceV1alpha1StageSummary struct { + + // metadata contains the Stage's identity and Kubernetes object metadata. + Metadata struct { + V1ObjectMeta + } `json:"metadata,omitempty"` + + // spec contains the subset of StageSpec fields needed by list/graph views. + Spec struct { + GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary + } `json:"spec,omitempty"` + + // status contains the subset of StageStatus fields needed by list/graph views. + Status struct { + GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary + } `json:"status,omitempty"` +} + +// Validate validates this github com akuity kargo api service v1alpha1 stage summary +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) Validate(formats strfmt.Registry) error { + var res []error + + if err := m.validateMetadata(formats); err != nil { + res = append(res, err) + } + + if err := m.validateSpec(formats); err != nil { + res = append(res, err) + } + + if err := m.validateStatus(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) validateMetadata(formats strfmt.Registry) error { + if swag.IsZero(m.Metadata) { // not required + return nil + } + + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) validateSpec(formats strfmt.Registry) error { + if swag.IsZero(m.Spec) { // not required + return nil + } + + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) validateStatus(formats strfmt.Registry) error { + if swag.IsZero(m.Status) { // not required + return nil + } + + return nil +} + +// ContextValidate validate this github com akuity kargo api service v1alpha1 stage summary based on the context it is used +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := m.contextValidateMetadata(ctx, formats); err != nil { + res = append(res, err) + } + + if err := m.contextValidateSpec(ctx, formats); err != nil { + res = append(res, err) + } + + if err := m.contextValidateStatus(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) contextValidateMetadata(ctx context.Context, formats strfmt.Registry) error { + + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) contextValidateSpec(ctx context.Context, formats strfmt.Registry) error { + + return nil +} + +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) contextValidateStatus(ctx context.Context, formats strfmt.Registry) error { + + return nil +} + +// MarshalBinary interface implementation +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) UnmarshalBinary(b []byte) error { + var res GithubComAkuityKargoAPIServiceV1alpha1StageSummary + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/pkg/server/list_stage_summaries_v1alpha1.go b/pkg/server/list_stage_summaries_v1alpha1.go new file mode 100644 index 0000000000..b3848da83a --- /dev/null +++ b/pkg/server/list_stage_summaries_v1alpha1.go @@ -0,0 +1,227 @@ +package server + +import ( + "context" + "fmt" + "net/http" + "slices" + "strings" + "time" + + "connectrpc.com/connect" + "github.com/gin-gonic/gin" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + + svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" + kargoapi "github.com/akuity/kargo/api/v1alpha1" + "github.com/akuity/kargo/pkg/logging" +) + +// ListStageSummaries returns a lightweight projection of the Stages in the +// given project. When the request's FreightOrigins field is non-empty, only +// Stages that subscribe to Freight from at least one of the named Warehouses +// are returned. +func (s *server) ListStageSummaries( + ctx context.Context, + req *connect.Request[svcv1alpha1.ListStageSummariesRequest], +) (*connect.Response[svcv1alpha1.ListStageSummariesResponse], error) { + project := req.Msg.GetProject() + if err := validateFieldNotEmpty("project", project); err != nil { + return nil, err + } + + if err := s.validateProjectExists(ctx, project); err != nil { + return nil, err + } + + var list kargoapi.StageList + if err := s.client.List(ctx, &list, client.InNamespace(project)); err != nil { + return nil, fmt.Errorf("list stages: %w", err) + } + + filtered := filterStagesByWarehouses(list.Items, req.Msg.GetFreightOrigins()) + + slices.SortFunc(filtered, func(a, b kargoapi.Stage) int { + return strings.Compare(a.Name, b.Name) + }) + + summaries := make([]*svcv1alpha1.StageSummary, len(filtered)) + for i := range filtered { + summaries[i] = stageToSummary(&filtered[i]) + } + + return connect.NewResponse(&svcv1alpha1.ListStageSummariesResponse{ + StageSummaries: summaries, + ResourceVersion: list.ResourceVersion, + }), nil +} + +// filterStagesByWarehouses returns the subset of stages that request Freight +// from at least one of the named Warehouses. Both direct and indirect +// subscribers match: membership is determined solely by FreightRequest.Origin, +// independent of whether Sources.Direct is true or the Freight arrives via an +// upstream Stage. An empty warehouseNames slice returns all stages unchanged. +func filterStagesByWarehouses( + stages []kargoapi.Stage, + warehouseNames []string, +) []kargoapi.Stage { + if len(warehouseNames) == 0 { + return stages + } + want := make(map[string]struct{}, len(warehouseNames)) + for _, n := range warehouseNames { + if n == "" { + continue + } + want[n] = struct{}{} + } + if len(want) == 0 { + return stages + } + out := stages[:0:0] + for i := range stages { + if stageMatchesAnyWarehouse(&stages[i], want) { + out = append(out, stages[i]) + } + } + return out +} + +// stageMatchesAnyWarehouse returns true if the given Stage requests Freight +// from any of the Warehouse names in the given set. +func stageMatchesAnyWarehouse( + stage *kargoapi.Stage, + warehouseNames map[string]struct{}, +) bool { + for _, req := range stage.Spec.RequestedFreight { + if _, ok := warehouseNames[req.Origin.Name]; ok { + return true + } + } + return false +} + +// @id ListStageSummaries +// @Summary List Stage Summaries +// @Description List a lightweight projection of Stage resources from a +// @Description project's namespace. Intended for UI list and graph views that +// @Description need metadata and current state for many Stages at once but do +// @Description not need full FreightHistory, PromotionTemplate steps, or +// @Description Verification configuration. Use GetStage for detail fields. +// @Tags Core, Project-Level +// @Security BearerAuth +// @Produce json +// @Param project path string true "Project name" +// @Param freightOrigins query []string false "Warehouse name(s) to filter by" collectionFormat(multi) +// @Success 200 {object} svcv1alpha1.ListStageSummariesResponse +// @Router /v1beta1/projects/{project}/stage-summaries [get] +func (s *server) listStageSummaries(c *gin.Context) { + ctx := c.Request.Context() + project := c.Param("project") + + if watchMode := c.Query("watch") == trueStr; watchMode { + s.watchStageSummaries(c, project) + return + } + + freightOrigins := c.QueryArray("freightOrigins") + + list := &kargoapi.StageList{} + if err := s.client.List(ctx, list, client.InNamespace(project)); err != nil { + _ = c.Error(err) + return + } + + filtered := filterStagesByWarehouses(list.Items, freightOrigins) + + slices.SortFunc(filtered, func(a, b kargoapi.Stage) int { + return strings.Compare(a.Name, b.Name) + }) + + summaries := make([]*svcv1alpha1.StageSummary, len(filtered)) + for i := range filtered { + summaries[i] = stageToSummary(&filtered[i]) + } + + c.JSON(http.StatusOK, &svcv1alpha1.ListStageSummariesResponse{ + StageSummaries: summaries, + ResourceVersion: list.ResourceVersion, + }) +} + +func (s *server) watchStageSummaries(c *gin.Context, project string) { + ctx := c.Request.Context() + logger := logging.LoggerFromContext(ctx) + + freightOrigins := c.QueryArray("freightOrigins") + want := warehouseNameSet(freightOrigins) + + opts := []client.ListOption{client.InNamespace(project)} + if rv := c.Query("resourceVersion"); rv != "" { + opts = append(opts, &client.ListOptions{ + Raw: &metav1.ListOptions{ResourceVersion: rv}, + }) + } + + w, err := s.client.Watch(ctx, &kargoapi.StageList{}, opts...) + if err != nil { + logger.Error(err, "failed to start watch") + _ = c.Error(fmt.Errorf("watch stage summaries: %w", err)) + return + } + defer w.Stop() + + keepaliveTicker := time.NewTicker(30 * time.Second) + defer keepaliveTicker.Stop() + + setSSEHeaders(c) + + for { + select { + case <-ctx.Done(): + logger.Debug("watch context done", "error", ctx.Err()) + return + + case <-keepaliveTicker.C: + if !writeSSEKeepalive(c) { + return + } + + case e, ok := <-w.ResultChan(): + if !ok { + logger.Debug("watch channel closed") + return + } + stage, ok := convertWatchEventObject(c, e, (*kargoapi.Stage)(nil)) + if !ok { + continue + } + if len(want) > 0 && !stageMatchesAnyWarehouse(stage, want) { + continue + } + if !sendSSEWatchEvent(c, e.Type, stageToSummary(stage)) { + return + } + } + } +} + +// warehouseNameSet builds a set from the given names, skipping empty entries. +// Returns nil if no non-empty names are supplied, signaling "no filter". +func warehouseNameSet(names []string) map[string]struct{} { + if len(names) == 0 { + return nil + } + want := make(map[string]struct{}, len(names)) + for _, n := range names { + if n == "" { + continue + } + want[n] = struct{}{} + } + if len(want) == 0 { + return nil + } + return want +} diff --git a/pkg/server/list_stage_summaries_v1alpha1_test.go b/pkg/server/list_stage_summaries_v1alpha1_test.go new file mode 100644 index 0000000000..b746d4bd35 --- /dev/null +++ b/pkg/server/list_stage_summaries_v1alpha1_test.go @@ -0,0 +1,262 @@ +package server + +import ( + "context" + "encoding/json" + "net/http" + "net/http/httptest" + "testing" + + "connectrpc.com/connect" + "github.com/stretchr/testify/require" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/fake" + + svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" + kargoapi "github.com/akuity/kargo/api/v1alpha1" + "github.com/akuity/kargo/pkg/server/config" + "github.com/akuity/kargo/pkg/server/kubernetes" + "github.com/akuity/kargo/pkg/server/validation" +) + +func TestListStageSummaries(t *testing.T) { + const projectName = "kargo-demo" + + newStage := func(name, warehouseName string) *kargoapi.Stage { + return &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Namespace: projectName, Name: name}, + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{Kind: kargoapi.FreightOriginKindWarehouse, Name: warehouseName}, + Sources: kargoapi.FreightSources{Direct: true}, + }}, + }, + } + } + + testCases := map[string]struct { + req *svcv1alpha1.ListStageSummariesRequest + assert func(*testing.T, *connect.Response[svcv1alpha1.ListStageSummariesResponse], error) + }{ + "empty project": { + req: &svcv1alpha1.ListStageSummariesRequest{Project: ""}, + assert: func(t *testing.T, _ *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { + require.Error(t, err) + require.Equal(t, connect.CodeInvalidArgument, connect.CodeOf(err)) + }, + }, + "non-existing project": { + req: &svcv1alpha1.ListStageSummariesRequest{Project: "does-not-exist"}, + assert: func(t *testing.T, _ *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { + require.Error(t, err) + require.Equal(t, connect.CodeNotFound, connect.CodeOf(err)) + }, + }, + "no filter returns all stages sorted by name": { + req: &svcv1alpha1.ListStageSummariesRequest{Project: projectName}, + assert: func(t *testing.T, res *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { + require.NoError(t, err) + summaries := res.Msg.GetStageSummaries() + require.Len(t, summaries, 3) + require.Equal(t, "a-dev", summaries[0].Metadata.Name) + require.Equal(t, "b-qa", summaries[1].Metadata.Name) + require.Equal(t, "c-prod", summaries[2].Metadata.Name) + }, + }, + "single warehouse filter": { + req: &svcv1alpha1.ListStageSummariesRequest{ + Project: projectName, + FreightOrigins: []string{"wh-a"}, + }, + assert: func(t *testing.T, res *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { + require.NoError(t, err) + summaries := res.Msg.GetStageSummaries() + require.Len(t, summaries, 2) + names := []string{summaries[0].Metadata.Name, summaries[1].Metadata.Name} + require.ElementsMatch(t, []string{"a-dev", "b-qa"}, names) + }, + }, + "multiple warehouse filter": { + req: &svcv1alpha1.ListStageSummariesRequest{ + Project: projectName, + FreightOrigins: []string{"wh-a", "wh-b"}, + }, + assert: func(t *testing.T, res *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { + require.NoError(t, err) + require.Len(t, res.Msg.GetStageSummaries(), 3) + }, + }, + "unknown warehouse returns empty": { + req: &svcv1alpha1.ListStageSummariesRequest{ + Project: projectName, + FreightOrigins: []string{"wh-nonexistent"}, + }, + assert: func(t *testing.T, res *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { + require.NoError(t, err) + require.Empty(t, res.Msg.GetStageSummaries()) + }, + }, + "empty filter strings are ignored": { + req: &svcv1alpha1.ListStageSummariesRequest{ + Project: projectName, + FreightOrigins: []string{"", ""}, + }, + assert: func(t *testing.T, res *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { + require.NoError(t, err) + // all empty → treated as no filter → return all + require.Len(t, res.Msg.GetStageSummaries(), 3) + }, + }, + } + + for name, tc := range testCases { + t.Run(name, func(t *testing.T) { + t.Parallel() + ctx := t.Context() + kubeClient, err := kubernetes.NewClient( + ctx, + &rest.Config{}, + kubernetes.ClientOptions{ + SkipAuthorization: true, + NewInternalClient: func( + context.Context, *rest.Config, *runtime.Scheme, + ) (client.WithWatch, error) { + return fake.NewClientBuilder(). + WithScheme(mustNewScheme()). + WithObjects( + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{ + Name: projectName, + Labels: map[string]string{kargoapi.LabelKeyProject: kargoapi.LabelValueTrue}, + }}, + &kargoapi.Project{ObjectMeta: metav1.ObjectMeta{Name: projectName}}, + ). + WithLists(&kargoapi.StageList{Items: []kargoapi.Stage{ + *newStage("a-dev", "wh-a"), + *newStage("b-qa", "wh-a"), + *newStage("c-prod", "wh-b"), + }}). + Build(), nil + }, + }, + ) + require.NoError(t, err) + + svr := &server{client: kubeClient} + svr.externalValidateProjectFn = validation.ValidateProject + + res, err := svr.ListStageSummaries(ctx, connect.NewRequest(tc.req)) + tc.assert(t, res, err) + }) + } +} + +func Test_server_listStageSummaries(t *testing.T) { + testProject := &kargoapi.Project{ObjectMeta: metav1.ObjectMeta{Name: "fake-project"}} + + newStage := func(name, warehouseName string) *kargoapi.Stage { + return &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Namespace: testProject.Name, Name: name}, + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{Kind: kargoapi.FreightOriginKindWarehouse, Name: warehouseName}, + Sources: kargoapi.FreightSources{Direct: true}, + }}, + }, + } + } + + testRESTEndpoint( + t, &config.ServerConfig{}, + http.MethodGet, "/v1beta1/projects/"+testProject.Name+"/stage-summaries", + []restTestCase{ + { + name: "project does not exist", + assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { + require.Equal(t, http.StatusNotFound, w.Code) + }, + }, + { + name: "no stages exist", + clientBuilder: fake.NewClientBuilder().WithObjects(testProject), + assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { + require.Equal(t, http.StatusOK, w.Code) + resp := &svcv1alpha1.ListStageSummariesResponse{} + require.NoError(t, json.Unmarshal(w.Body.Bytes(), resp)) + require.Empty(t, resp.GetStageSummaries()) + }, + }, + { + name: "lists stage summaries, sorted by name", + clientBuilder: fake.NewClientBuilder().WithObjects( + testProject, + newStage("b-qa", "wh-a"), + newStage("a-dev", "wh-a"), + ), + assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { + require.Equal(t, http.StatusOK, w.Code) + resp := &svcv1alpha1.ListStageSummariesResponse{} + require.NoError(t, json.Unmarshal(w.Body.Bytes(), resp)) + require.Len(t, resp.GetStageSummaries(), 2) + require.Equal(t, "a-dev", resp.GetStageSummaries()[0].Metadata.Name) + require.Equal(t, "b-qa", resp.GetStageSummaries()[1].Metadata.Name) + }, + }, + { + name: "applies freightOrigins filter", + url: "/v1beta1/projects/" + testProject.Name + "/stage-summaries?freightOrigins=wh-a", + clientBuilder: fake.NewClientBuilder().WithObjects( + testProject, + newStage("a-dev", "wh-a"), + newStage("c-prod", "wh-b"), + ), + assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { + require.Equal(t, http.StatusOK, w.Code) + resp := &svcv1alpha1.ListStageSummariesResponse{} + require.NoError(t, json.Unmarshal(w.Body.Bytes(), resp)) + require.Len(t, resp.GetStageSummaries(), 1) + require.Equal(t, "a-dev", resp.GetStageSummaries()[0].Metadata.Name) + }, + }, + }, + ) +} + +func Test_server_listStageSummaries_watch(t *testing.T) { + const projectName = "fake-project" + + testRESTWatchEndpoint( + t, &config.ServerConfig{}, + "/v1beta1/projects/"+projectName+"/stage-summaries?watch=true", + []restWatchTestCase{ + { + name: "project not found", + url: "/v1beta1/projects/non-existent/stage-summaries?watch=true", + clientBuilder: fake.NewClientBuilder(), + assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { + require.Equal(t, http.StatusNotFound, w.Code) + }, + }, + { + name: "streams events as SSE", + clientBuilder: fake.NewClientBuilder().WithObjects( + &kargoapi.Project{ObjectMeta: metav1.ObjectMeta{Name: projectName}}, + &kargoapi.Stage{ObjectMeta: metav1.ObjectMeta{Namespace: projectName, Name: "a"}}, + ), + operations: func(ctx context.Context, c client.Client) { + _ = c.Create(ctx, &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Namespace: projectName, Name: "b"}, + }) + }, + assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { + require.Equal(t, http.StatusOK, w.Code) + require.Equal(t, "text/event-stream", w.Header().Get("Content-Type")) + require.Contains(t, w.Body.String(), "data:") + }, + }, + }, + ) +} diff --git a/pkg/server/rest_router.go b/pkg/server/rest_router.go index fca39b259a..af54a4a81c 100644 --- a/pkg/server/rest_router.go +++ b/pkg/server/rest_router.go @@ -190,6 +190,7 @@ func (s *server) setupRESTRouter(ctx context.Context) *gin.Engine { // Stages project.GET("/stages", s.listStages) + project.GET("/stage-summaries", s.listStageSummaries) project.GET("/stages/:stage", s.getStage) project.POST("/stages/:stage/refresh", s.refreshStage) project.DELETE("/stages/:stage", s.deleteStage) diff --git a/pkg/server/stage_to_summary.go b/pkg/server/stage_to_summary.go new file mode 100644 index 0000000000..6e957c5705 --- /dev/null +++ b/pkg/server/stage_to_summary.go @@ -0,0 +1,82 @@ +package server + +import ( + "math" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" + kargoapi "github.com/akuity/kargo/api/v1alpha1" +) + +// stageToSummary converts a Stage to the lightweight StageSummary projection +// returned by ListStageSummaries and WatchStageSummaries. See the StageSummary +// proto definition for the rationale. Returns nil if stage is nil. +func stageToSummary(stage *kargoapi.Stage) *svcv1alpha1.StageSummary { + if stage == nil { + return nil + } + + meta := stage.ObjectMeta.DeepCopy() + + summary := &svcv1alpha1.StageSummary{ + Metadata: meta, + Spec: &svcv1alpha1.StageSpecSummary{ + Shard: stage.Spec.Shard, + RequestedFreight: cloneFreightRequests(stage.Spec.RequestedFreight), + HasVerification: stage.Spec.Verification != nil, + }, + Status: &svcv1alpha1.StageStatusSummary{ + Conditions: cloneConditions(stage.Status.Conditions), + LastHandledRefresh: stage.Status.LastHandledRefresh, + CurrentPromotion: stage.Status.CurrentPromotion.DeepCopy(), + LastPromotion: stage.Status.LastPromotion.DeepCopy(), + Health: stage.Status.Health.DeepCopy(), + ObservedGeneration: stage.Status.ObservedGeneration, + AutoPromotionEnabled: stage.Status.AutoPromotionEnabled, + }, + } + + if stage.Spec.PromotionTemplate != nil { + n := len(stage.Spec.PromotionTemplate.Spec.Steps) + if n > int(math.MaxInt32) { + n = int(math.MaxInt32) + } + summary.Spec.PromotionStepCount = int32(n) + } + + if len(stage.Status.FreightHistory) > 0 { + summary.Status.CurrentFreight = stage.Status.FreightHistory[0].DeepCopy() + } + + return summary +} + +// cloneFreightRequests returns a deep copy of the given FreightRequests as a +// slice of pointers (matching the shape of the generated protobuf field). +func cloneFreightRequests(src []kargoapi.FreightRequest) []*kargoapi.FreightRequest { + if len(src) == 0 { + return nil + } + dst := make([]*kargoapi.FreightRequest, len(src)) + for i := range src { + dst[i] = src[i].DeepCopy() + } + return dst +} + +// cloneConditions returns a deep copy of the given Conditions as a slice of +// pointers (matching the shape of the generated protobuf field). Each +// metav1.Condition contains only primitive fields, so a shallow per-element +// copy is sufficient. +func cloneConditions(src []metav1.Condition) []*metav1.Condition { + if len(src) == 0 { + return nil + } + dst := make([]*metav1.Condition, len(src)) + for i := range src { + c := src[i] + dst[i] = &c + } + return dst +} diff --git a/pkg/server/stage_to_summary_test.go b/pkg/server/stage_to_summary_test.go new file mode 100644 index 0000000000..7face7beaa --- /dev/null +++ b/pkg/server/stage_to_summary_test.go @@ -0,0 +1,179 @@ +package server + +import ( + "testing" + + "github.com/stretchr/testify/require" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + kargoapi "github.com/akuity/kargo/api/v1alpha1" +) + +func TestStageToSummary(t *testing.T) { + t.Run("nil stage returns nil", func(t *testing.T) { + t.Parallel() + require.Nil(t, stageToSummary(nil)) + }) + + t.Run("minimal stage preserves identity and zero-valued fields", func(t *testing.T) { + t.Parallel() + s := &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Name: "dev", Namespace: "proj"}, + } + got := stageToSummary(s) + require.NotNil(t, got) + require.NotNil(t, got.Metadata) + require.Equal(t, "dev", got.Metadata.Name) + require.Equal(t, "proj", got.Metadata.Namespace) + require.NotNil(t, got.Spec) + require.Empty(t, got.Spec.Shard) + require.Empty(t, got.Spec.RequestedFreight) + require.Zero(t, got.Spec.PromotionStepCount) + require.False(t, got.Spec.HasVerification) + require.NotNil(t, got.Status) + require.Empty(t, got.Status.Conditions) + require.Nil(t, got.Status.CurrentFreight) + require.Nil(t, got.Status.CurrentPromotion) + require.Nil(t, got.Status.LastPromotion) + require.Nil(t, got.Status.Health) + require.Zero(t, got.Status.ObservedGeneration) + require.False(t, got.Status.AutoPromotionEnabled) + }) + + t.Run("fully populated stage projects every summary field", func(t *testing.T) { + t.Parallel() + health := &kargoapi.Health{Status: kargoapi.HealthStateHealthy} + currentPromo := &kargoapi.PromotionReference{Name: "promo-current"} + lastPromo := &kargoapi.PromotionReference{Name: "promo-last"} + + s := &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{ + Name: "qa", + Namespace: "proj", + UID: "uid-1", + Labels: map[string]string{"kargo.akuity.io/shard": "east"}, + Annotations: map[string]string{"kargo.akuity.io/description": "QA"}, + }, + Spec: kargoapi.StageSpec{ + Shard: "east", + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{Kind: kargoapi.FreightOriginKindWarehouse, Name: "wh-1"}, + Sources: kargoapi.FreightSources{Direct: true}, + }}, + PromotionTemplate: &kargoapi.PromotionTemplate{ + Spec: kargoapi.PromotionTemplateSpec{ + Steps: []kargoapi.PromotionStep{{}, {}, {}}, + }, + }, + Verification: &kargoapi.Verification{}, + }, + Status: kargoapi.StageStatus{ + Conditions: []metav1.Condition{{ + Type: "Ready", + Status: metav1.ConditionTrue, + Reason: "Healthy", + Message: "all good", + }}, + LastHandledRefresh: "refresh-token-1", + FreightHistory: kargoapi.FreightHistory{ + {ID: "fc-current"}, + {ID: "fc-older"}, + }, + CurrentPromotion: currentPromo, + LastPromotion: lastPromo, + Health: health, + ObservedGeneration: 7, + AutoPromotionEnabled: true, + // Fields that must NOT appear in the summary: + FreightSummary: "human-readable summary", + }, + } + + got := stageToSummary(s) + require.NotNil(t, got) + + // Metadata + require.Equal(t, "qa", got.Metadata.Name) + require.Equal(t, "proj", got.Metadata.Namespace) + require.Equal(t, "east", got.Metadata.Labels["kargo.akuity.io/shard"]) + require.Equal(t, "QA", got.Metadata.Annotations["kargo.akuity.io/description"]) + + // Spec summary + require.Equal(t, "east", got.Spec.Shard) + require.Len(t, got.Spec.RequestedFreight, 1) + require.Equal(t, "wh-1", got.Spec.RequestedFreight[0].Origin.Name) + require.Equal(t, int32(3), got.Spec.PromotionStepCount) + require.True(t, got.Spec.HasVerification) + + // Status summary + require.Len(t, got.Status.Conditions, 1) + require.Equal(t, "Ready", got.Status.Conditions[0].Type) + require.Equal(t, "refresh-token-1", got.Status.LastHandledRefresh) + require.NotNil(t, got.Status.CurrentFreight) + require.Equal(t, "fc-current", got.Status.CurrentFreight.ID) + require.Equal(t, "promo-current", got.Status.CurrentPromotion.Name) + require.Equal(t, "promo-last", got.Status.LastPromotion.Name) + require.Equal(t, kargoapi.HealthStateHealthy, got.Status.Health.Status) + require.Equal(t, int64(7), got.Status.ObservedGeneration) + require.True(t, got.Status.AutoPromotionEnabled) + }) + + t.Run("empty freight history omits current freight", func(t *testing.T) { + t.Parallel() + s := &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Name: "s"}, + Status: kargoapi.StageStatus{FreightHistory: nil}, + } + got := stageToSummary(s) + require.NotNil(t, got) + require.Nil(t, got.Status.CurrentFreight) + }) + + t.Run("nil promotion template yields zero step count", func(t *testing.T) { + t.Parallel() + s := &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Name: "s"}, + Spec: kargoapi.StageSpec{PromotionTemplate: nil}, + } + got := stageToSummary(s) + require.NotNil(t, got) + require.Zero(t, got.Spec.PromotionStepCount) + }) + + t.Run("nil verification yields hasVerification false", func(t *testing.T) { + t.Parallel() + s := &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Name: "s"}, + Spec: kargoapi.StageSpec{Verification: nil}, + } + got := stageToSummary(s) + require.NotNil(t, got) + require.False(t, got.Spec.HasVerification) + }) + + t.Run("mutating the summary does not affect the source Stage", func(t *testing.T) { + t.Parallel() + s := &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Name: "s", Labels: map[string]string{"k": "v"}}, + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{Name: "wh"}, + }}, + }, + Status: kargoapi.StageStatus{ + Conditions: []metav1.Condition{{Type: "Ready"}}, + }, + } + got := stageToSummary(s) + + // Mutate the summary. + got.Metadata.Labels["k"] = "mutated" + got.Spec.RequestedFreight[0].Origin.Name = "mutated" + got.Status.Conditions[0].Type = "Mutated" + + // Source Stage should be unchanged. + require.Equal(t, "v", s.Labels["k"]) + require.Equal(t, "wh", s.Spec.RequestedFreight[0].Origin.Name) + require.Equal(t, "Ready", s.Status.Conditions[0].Type) + }) +} diff --git a/pkg/server/watch_stage_summaries_v1alpha1.go b/pkg/server/watch_stage_summaries_v1alpha1.go new file mode 100644 index 0000000000..8410c22377 --- /dev/null +++ b/pkg/server/watch_stage_summaries_v1alpha1.go @@ -0,0 +1,87 @@ +package server + +import ( + "context" + "fmt" + + "connectrpc.com/connect" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + libClient "sigs.k8s.io/controller-runtime/pkg/client" + + svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" + kargoapi "github.com/akuity/kargo/api/v1alpha1" + "github.com/akuity/kargo/pkg/logging" +) + +// WatchStageSummaries streams StageSummary events for changes to Stages in +// the given project. The response payload mirrors the WatchStages endpoint +// but returns the lightweight StageSummary projection instead of the full +// Stage resource. See ListStageSummaries for the motivation. +func (s *server) WatchStageSummaries( + ctx context.Context, + req *connect.Request[svcv1alpha1.WatchStageSummariesRequest], + stream *connect.ServerStream[svcv1alpha1.WatchStageSummariesResponse], +) error { + project := req.Msg.GetProject() + if err := validateFieldNotEmpty("project", project); err != nil { + return err + } + + if err := s.validateProjectExists(ctx, project); err != nil { + return err + } + + name := req.Msg.GetName() + if name != "" { + if err := s.client.Get(ctx, libClient.ObjectKey{ + Namespace: project, + Name: name, + }, &kargoapi.Stage{}); err != nil { + return fmt.Errorf("get stage: %w", err) + } + } + + want := warehouseNameSet(req.Msg.GetFreightOrigins()) + + opts := []libClient.ListOption{libClient.InNamespace(project)} + if name != "" { + opts = append(opts, libClient.MatchingFields{"metadata.name": name}) + } + if rv := req.Msg.GetResourceVersion(); rv != "" { + opts = append(opts, &libClient.ListOptions{ + Raw: &metav1.ListOptions{ResourceVersion: rv}, + }) + } + + w, err := s.client.Watch(ctx, &kargoapi.StageList{}, opts...) + if err != nil { + return fmt.Errorf("watch stage summaries: %w", err) + } + defer w.Stop() + + for { + select { + case <-ctx.Done(): + logger := logging.LoggerFromContext(ctx) + logger.Debug(ctx.Err().Error()) + return nil + case e, ok := <-w.ResultChan(): + if !ok { + return nil + } + stage, ok := e.Object.(*kargoapi.Stage) + if !ok { + return fmt.Errorf("unexpected object type %T", e.Object) + } + if len(want) > 0 && !stageMatchesAnyWarehouse(stage, want) { + continue + } + if err := stream.Send(&svcv1alpha1.WatchStageSummariesResponse{ + StageSummary: stageToSummary(stage), + Type: string(e.Type), + }); err != nil { + return fmt.Errorf("send response: %w", err) + } + } + } +} diff --git a/pkg/server/watch_stage_summaries_v1alpha1_test.go b/pkg/server/watch_stage_summaries_v1alpha1_test.go new file mode 100644 index 0000000000..25ab8eac74 --- /dev/null +++ b/pkg/server/watch_stage_summaries_v1alpha1_test.go @@ -0,0 +1,202 @@ +package server + +import ( + "context" + "testing" + "time" + + "github.com/stretchr/testify/require" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/fake" + + svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" + kargoapi "github.com/akuity/kargo/api/v1alpha1" + "github.com/akuity/kargo/pkg/server/kubernetes" + "github.com/akuity/kargo/pkg/server/validation" +) + +// fakeWatchSummariesStream captures events sent by the server so tests can +// inspect them. +type fakeWatchSummariesStream struct { + events []*svcv1alpha1.WatchStageSummariesResponse +} + +func (f *fakeWatchSummariesStream) Send(resp *svcv1alpha1.WatchStageSummariesResponse) error { + f.events = append(f.events, resp) + return nil +} + +func TestWatchStageSummaries(t *testing.T) { + const projectName = "kargo-demo" + + newStage := func(name, warehouseName string) *kargoapi.Stage { + return &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Namespace: projectName, Name: name}, + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{Kind: kargoapi.FreightOriginKindWarehouse, Name: warehouseName}, + Sources: kargoapi.FreightSources{Direct: true}, + }}, + }, + } + } + + testCases := map[string]struct { + req *svcv1alpha1.WatchStageSummariesRequest + seed []client.Object + after func(ctx context.Context, c client.Client) + wantError bool + assert func(t *testing.T, events []*svcv1alpha1.WatchStageSummariesResponse) + }{ + "empty project is rejected": { + req: &svcv1alpha1.WatchStageSummariesRequest{Project: ""}, + wantError: true, + }, + "non-existing project is rejected": { + req: &svcv1alpha1.WatchStageSummariesRequest{Project: "does-not-exist"}, + wantError: true, + }, + "emits stageSummary (not full Stage) for created objects": { + req: &svcv1alpha1.WatchStageSummariesRequest{Project: projectName}, + after: func(ctx context.Context, c client.Client) { + _ = c.Create(ctx, newStage("a", "wh-a")) + }, + assert: func(t *testing.T, events []*svcv1alpha1.WatchStageSummariesResponse) { + require.NotEmpty(t, events) + evt := events[0] + require.NotNil(t, evt.StageSummary) + require.Equal(t, "a", evt.StageSummary.Metadata.Name) + require.NotEmpty(t, evt.Type) + }, + }, + "filter drops non-matching warehouse events": { + req: &svcv1alpha1.WatchStageSummariesRequest{ + Project: projectName, + FreightOrigins: []string{"wh-a"}, + }, + after: func(ctx context.Context, c client.Client) { + _ = c.Create(ctx, newStage("a", "wh-a")) + _ = c.Create(ctx, newStage("b", "wh-other")) + }, + assert: func(t *testing.T, events []*svcv1alpha1.WatchStageSummariesResponse) { + for _, evt := range events { + require.Equal(t, "a", evt.StageSummary.Metadata.Name) + } + require.NotEmpty(t, events) + }, + }, + } + + for name, tc := range testCases { + t.Run(name, func(t *testing.T) { + t.Parallel() + ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) + defer cancel() + + seed := append([]client.Object{ + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{ + Name: projectName, + Labels: map[string]string{kargoapi.LabelKeyProject: kargoapi.LabelValueTrue}, + }}, + &kargoapi.Project{ObjectMeta: metav1.ObjectMeta{Name: projectName}}, + }, tc.seed...) + + kubeClient, err := kubernetes.NewClient( + ctx, + &rest.Config{}, + kubernetes.ClientOptions{ + SkipAuthorization: true, + NewInternalClient: func( + context.Context, *rest.Config, *runtime.Scheme, + ) (client.WithWatch, error) { + return fake.NewClientBuilder(). + WithScheme(mustNewScheme()). + WithObjects(seed...). + Build(), nil + }, + }, + ) + require.NoError(t, err) + + svr := &server{client: kubeClient} + svr.externalValidateProjectFn = validation.ValidateProject + + fakeStream := &fakeWatchSummariesStream{} + + errCh := make(chan error, 1) + go func() { + errCh <- runWatchStageSummariesForTest(ctx, svr, tc.req, fakeStream) + }() + + // Let the watch start before triggering operations. + time.Sleep(100 * time.Millisecond) + if tc.after != nil { + tc.after(ctx, svr.client.InternalClient()) + } + time.Sleep(300 * time.Millisecond) + cancel() + err = <-errCh + + if tc.wantError { + require.Error(t, err) + return + } + require.NoError(t, err) + if tc.assert != nil { + tc.assert(t, fakeStream.events) + } + }) + } +} + +// runWatchStageSummariesForTest mirrors WatchStageSummaries but sends events +// to a test stream instead of a connect.ServerStream. Keeps test logic +// independent of connect's unexported stream constructors. +func runWatchStageSummariesForTest( + ctx context.Context, + s *server, + req *svcv1alpha1.WatchStageSummariesRequest, + out interface { + Send(*svcv1alpha1.WatchStageSummariesResponse) error + }, +) error { + if err := validateFieldNotEmpty("project", req.GetProject()); err != nil { + return err + } + if err := s.validateProjectExists(ctx, req.GetProject()); err != nil { + return err + } + want := warehouseNameSet(req.GetFreightOrigins()) + w, err := s.client.Watch(ctx, &kargoapi.StageList{}, client.InNamespace(req.GetProject())) + if err != nil { + return err + } + defer w.Stop() + for { + select { + case <-ctx.Done(): + return nil + case e, ok := <-w.ResultChan(): + if !ok { + return nil + } + stage, ok := e.Object.(*kargoapi.Stage) + if !ok { + continue + } + if len(want) > 0 && !stageMatchesAnyWarehouse(stage, want) { + continue + } + if err := out.Send(&svcv1alpha1.WatchStageSummariesResponse{ + StageSummary: stageToSummary(stage), + Type: string(e.Type), + }); err != nil { + return err + } + } + } +} diff --git a/swagger.json b/swagger.json index 4c18a1ff40..8ededfe7a4 100644 --- a/swagger.json +++ b/swagger.json @@ -2314,6 +2314,52 @@ } } }, + "/v1beta1/projects/{project}/stage-summaries": { + "get": { + "security": [ + { + "BearerAuth": [] + } + ], + "description": "List a lightweight projection of Stage resources from a\nproject's namespace. Intended for UI list and graph views that\nneed metadata and current state for many Stages at once but do\nnot need full FreightHistory, PromotionTemplate steps, or\nVerification configuration. Use GetStage for detail fields.", + "produces": [ + "application/json" + ], + "tags": [ + "Core", + "Project-Level" + ], + "summary": "List Stage Summaries", + "operationId": "ListStageSummaries", + "parameters": [ + { + "type": "string", + "description": "Project name", + "name": "project", + "in": "path", + "required": true + }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi", + "description": "Warehouse name(s) to filter by", + "name": "freightOrigins", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/github_com_akuity_kargo_api_service_v1alpha1.ListStageSummariesResponse" + } + } + } + } + }, "/v1beta1/projects/{project}/stages": { "get": { "security": [ @@ -5128,6 +5174,131 @@ } } }, + "github_com_akuity_kargo_api_service_v1alpha1.ListStageSummariesResponse": { + "type": "object", + "properties": { + "resourceVersion": { + "description": "resourceVersion is the Kubernetes ResourceVersion of the underlying\nStageList. Clients may pass this value to WatchStageSummaries to begin\nwatching from the exact point this list was taken, receiving only\nsubsequent changes without redundant initial events.", + "type": "string" + }, + "stageSummaries": { + "description": "stageSummaries is the list of StageSummary objects found in the project.", + "type": "array", + "items": { + "$ref": "#/definitions/github_com_akuity_kargo_api_service_v1alpha1.StageSummary" + } + } + } + }, + "github_com_akuity_kargo_api_service_v1alpha1.StageSpecSummary": { + "type": "object", + "properties": { + "hasVerification": { + "description": "hasVerification indicates whether the Stage defines a Verification.\nUse GetStage to retrieve the full Verification configuration.", + "type": "boolean" + }, + "promotionStepCount": { + "description": "promotionStepCount is the number of promotion steps defined in the\nStage's PromotionTemplate, or zero if no PromotionTemplate is defined.\nUse GetStage to retrieve the full step configuration.", + "type": "integer" + }, + "requestedFreight": { + "description": "requestedFreight mirrors StageSpec.requestedFreight. This is needed in\nfull to render graph edges between Stages and their upstream sources.", + "type": "array", + "items": { + "$ref": "#/definitions/FreightRequest" + } + }, + "shard": { + "description": "shard is the name of the shard that the Stage belongs to, mirroring\nStageSpec.shard.", + "type": "string" + } + } + }, + "github_com_akuity_kargo_api_service_v1alpha1.StageStatusSummary": { + "type": "object", + "properties": { + "autoPromotionEnabled": { + "description": "autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled.", + "type": "boolean" + }, + "conditions": { + "description": "conditions mirrors StageStatus.conditions.", + "type": "array", + "items": { + "$ref": "#/definitions/V1Condition" + } + }, + "currentFreight": { + "description": "currentFreight is the FreightCollection currently deployed to the Stage\n(i.e. index 0 of StageStatus.freightHistory), or null if no Freight has\nbeen deployed. Use GetStage to retrieve the full FreightHistory.", + "allOf": [ + { + "$ref": "#/definitions/FreightCollection" + } + ] + }, + "currentPromotion": { + "description": "currentPromotion mirrors StageStatus.currentPromotion.", + "allOf": [ + { + "$ref": "#/definitions/PromotionReference" + } + ] + }, + "health": { + "description": "health mirrors StageStatus.health.", + "allOf": [ + { + "$ref": "#/definitions/Health" + } + ] + }, + "lastHandledRefresh": { + "description": "lastHandledRefresh mirrors StageStatus.lastHandledRefresh.", + "type": "string" + }, + "lastPromotion": { + "description": "lastPromotion mirrors StageStatus.lastPromotion.", + "allOf": [ + { + "$ref": "#/definitions/PromotionReference" + } + ] + }, + "observedGeneration": { + "description": "observedGeneration mirrors StageStatus.observedGeneration.", + "type": "integer" + } + } + }, + "github_com_akuity_kargo_api_service_v1alpha1.StageSummary": { + "type": "object", + "properties": { + "metadata": { + "description": "metadata contains the Stage's identity and Kubernetes object metadata.", + "allOf": [ + { + "$ref": "#/definitions/V1ObjectMeta" + } + ] + }, + "spec": { + "description": "spec contains the subset of StageSpec fields needed by list/graph views.", + "allOf": [ + { + "$ref": "#/definitions/github_com_akuity_kargo_api_service_v1alpha1.StageSpecSummary" + } + ] + }, + "status": { + "description": "status contains the subset of StageStatus fields needed by list/graph views.", + "allOf": [ + { + "$ref": "#/definitions/github_com_akuity_kargo_api_service_v1alpha1.StageStatusSummary" + } + ] + } + } + }, "RolloutsAnalysisRun": { "type": "object", "properties": { diff --git a/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts b/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts index 3f74d3023b..eb8b50d162 100644 --- a/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts +++ b/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts @@ -78,6 +78,16 @@ export const refreshResource = KargoService.method.refreshResource; */ export const listStages = KargoService.method.listStages; +/** + * ListStageSummaries retrieves a lightweight projection of Stages within a + * project, containing only the fields typically required to render list + * and graph views. Use GetStage to retrieve the full Stage resource when + * detail-level fields are needed. + * + * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries + */ +export const listStageSummaries = KargoService.method.listStageSummaries; + /** * ListImages returns available images and their usage across stages. * diff --git a/ui/src/gen/api/service/v1alpha1/service_pb.ts b/ui/src/gen/api/service/v1alpha1/service_pb.ts index 90cf889acc..aa7f9ff4a5 100644 --- a/ui/src/gen/api/service/v1alpha1/service_pb.ts +++ b/ui/src/gen/api/service/v1alpha1/service_pb.ts @@ -6,10 +6,12 @@ import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobu import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; import type { Any, Timestamp } from "@bufbuild/protobuf/wkt"; import { file_google_protobuf_any, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; -import type { ClusterConfig, ClusterPromotionTask, Freight, Project, ProjectConfig, Promotion, PromotionTask, Stage, Warehouse } from "../../v1alpha1/generated_pb"; +import type { ClusterConfig, ClusterPromotionTask, Freight, FreightCollection, FreightRequest, Health, Project, ProjectConfig, Promotion, PromotionReference, PromotionTask, Stage, Warehouse } from "../../v1alpha1/generated_pb"; import { file_api_v1alpha1_generated } from "../../v1alpha1/generated_pb"; import type { ConfigMap, Event, Secret } from "../../../k8s.io/api/core/v1/generated_pb"; import { file_k8s_io_api_core_v1_generated } from "../../../k8s.io/api/core/v1/generated_pb"; +import type { Condition, ObjectMeta } from "../../../k8s.io/apimachinery/pkg/apis/meta/v1/generated_pb"; +import { file_k8s_io_apimachinery_pkg_apis_meta_v1_generated } from "../../../k8s.io/apimachinery/pkg/apis/meta/v1/generated_pb"; import type { AnalysisRun, AnalysisTemplate, ClusterAnalysisTemplate } from "../../stubs/rollouts/v1alpha1/generated_pb"; import { file_api_stubs_rollouts_v1alpha1_generated } from "../../stubs/rollouts/v1alpha1/generated_pb"; import type { Claim, ResourceDetails, Role, RoleResources } from "../../rbac/v1alpha1/generated_pb"; @@ -20,7 +22,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file api/service/v1alpha1/service.proto. */ export const file_api_service_v1alpha1_service: GenFile = /*@__PURE__*/ - fileDesc("CiJhcGkvc2VydmljZS92MWFscGhhMS9zZXJ2aWNlLnByb3RvEiBha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMSKrAQoRQ29tcG9uZW50VmVyc2lvbnMSQgoGc2VydmVyGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm9IAIgBARI/CgNjbGkYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5WZXJzaW9uSW5mb0gBiAEBQgkKB19zZXJ2ZXJCBgoEX2NsaSKyAQoLVmVyc2lvbkluZm8SDwoHdmVyc2lvbhgBIAEoCRISCgpnaXRfY29tbWl0GAIgASgJEhYKDmdpdF90cmVlX2RpcnR5GAMgASgIEi4KCmJ1aWxkX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdvX3ZlcnNpb24YBSABKAkSEAoIY29tcGlsZXIYBiABKAkSEAoIcGxhdGZvcm0YByABKAkiFwoVR2V0VmVyc2lvbkluZm9SZXF1ZXN0Il0KFkdldFZlcnNpb25JbmZvUmVzcG9uc2USQwoMdmVyc2lvbl9pbmZvGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm8iEgoQR2V0Q29uZmlnUmVxdWVzdCItCgtBcmdvQ0RTaGFyZBILCgN1cmwYASABKAkSEQoJbmFtZXNwYWNlGAIgASgJIsgCChFHZXRDb25maWdSZXNwb25zZRJcCg1hcmdvY2Rfc2hhcmRzGAEgAygLMkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UuQXJnb2NkU2hhcmRzRW50cnkSIQoZc2VjcmV0X21hbmFnZW1lbnRfZW5hYmxlZBgCIAEoCBIiChpzeXN0ZW1fcmVzb3VyY2VzX25hbWVzcGFjZRgDIAEoCRIqCiJoYXNfYW5hbHlzaXNfcnVuX2xvZ3NfdXJsX3RlbXBsYXRlGAQgASgIGmIKEUFyZ29jZFNoYXJkc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFyZ29DRFNoYXJkOgI4ASIYChZHZXRQdWJsaWNDb25maWdSZXF1ZXN0Io4BChdHZXRQdWJsaWNDb25maWdSZXNwb25zZRJBCgtvaWRjX2NvbmZpZxgBIAEoCzIsLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLk9JRENDb25maWcSHQoVYWRtaW5fYWNjb3VudF9lbmFibGVkGAIgASgIEhEKCXNraXBfYXV0aBgDIAEoCCJaCgpPSURDQ29uZmlnEhIKCmlzc3Vlcl91cmwYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1jbGlfY2xpZW50X2lkGAQgASgJIiUKEUFkbWluTG9naW5SZXF1ZXN0EhAKCHBhc3N3b3JkGAEgASgJIiYKEkFkbWluTG9naW5SZXNwb25zZRIQCghpZF90b2tlbhgBIAEoCSIpChVDcmVhdGVSZXNvdXJjZVJlcXVlc3QSEAoIbWFuaWZlc3QYASABKAwiVgoUQ3JlYXRlUmVzb3VyY2VSZXN1bHQSIwoZY3JlYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgBIAEoDEgAEg8KBWVycm9yGAIgASgJSABCCAoGcmVzdWx0ImEKFkNyZWF0ZVJlc291cmNlUmVzcG9uc2USRwoHcmVzdWx0cxgBIAMoCzI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzdWx0IjEKHUNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIoMBChxDcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0EiMKGWNyZWF0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAIgASgMSAASDwoFZXJyb3IYAyABKAlIAEIICgZyZXN1bHQicQoeQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEk8KB3Jlc3VsdHMYASADKAsyPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0IikKFVVwZGF0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCJWChRVcGRhdGVSZXNvdXJjZVJlc3VsdBIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASDwoFZXJyb3IYAiABKAlIAEIICgZyZXN1bHQiYQoWVXBkYXRlUmVzb3VyY2VSZXNwb25zZRJHCgdyZXN1bHRzGAEgAygLMjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXN1bHQiKQoVRGVsZXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIlYKFERlbGV0ZVJlc291cmNlUmVzdWx0EiMKGWRlbGV0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIPCgVlcnJvchgCIAEoCUgAQggKBnJlc3VsdCJhChZEZWxldGVSZXNvdXJjZVJlc3BvbnNlEkcKB3Jlc3VsdHMYASADKAsyNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3VsdCIkChFMaXN0U3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIlEKEkxpc3RTdGFnZXNSZXNwb25zZRI7CgZzdGFnZXMYASADKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2UiJAoRTGlzdEltYWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSK/AQoSTGlzdEltYWdlc1Jlc3BvbnNlElAKBmltYWdlcxgCIAMoCzJALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RJbWFnZXNSZXNwb25zZS5JbWFnZXNFbnRyeRpXCgtJbWFnZXNFbnRyeRILCgNrZXkYASABKAkSNwoFdmFsdWUYAiABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5UYWdNYXA6AjgBIqgBCgZUYWdNYXASQAoEdGFncxgBIAMoCzIyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlRhZ01hcC5UYWdzRW50cnkaXAoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRI+CgV2YWx1ZRgCIAEoCzIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkltYWdlU3RhZ2VNYXA6AjgBIosBCg1JbWFnZVN0YWdlTWFwEksKBnN0YWdlcxgBIAMoCzI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkltYWdlU3RhZ2VNYXAuU3RhZ2VzRW50cnkaLQoLU3RhZ2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ASJtCg9HZXRTdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJpChBHZXRTdGFnZVJlc3BvbnNlEjwKBXN0YWdlGAEgASgLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0YWdlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjMKEldhdGNoU3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiXwoTV2F0Y2hTdGFnZXNSZXNwb25zZRI6CgVzdGFnZRgBIAEoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZRIMCgR0eXBlGAIgASgJIjMKEkRlbGV0ZVN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiFQoTRGVsZXRlU3RhZ2VSZXNwb25zZSJWChdHZXRDbHVzdGVyQ29uZmlnUmVxdWVzdBI7CgZmb3JtYXQYASABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiggEKGEdldENsdXN0ZXJDb25maWdSZXNwb25zZRJNCg5jbHVzdGVyX2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyQ29uZmlnSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IhwKGkRlbGV0ZUNsdXN0ZXJDb25maWdSZXF1ZXN0Ih0KG0RlbGV0ZUNsdXN0ZXJDb25maWdSZXNwb25zZSIbChlXYXRjaENsdXN0ZXJDb25maWdSZXF1ZXN0IncKGldhdGNoQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlEksKDmNsdXN0ZXJfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJDb25maWcSDAoEdHlwZRgCIAEoCSJGChVMaXN0UHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJdChZMaXN0UHJvbW90aW9uc1Jlc3BvbnNlEkMKCnByb21vdGlvbnMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uIkcKFldhdGNoUHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJrChdXYXRjaFByb21vdGlvbnNSZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uEgwKBHR5cGUYAiABKAkicQoTR2V0UHJvbW90aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0InUKFEdldFByb21vdGlvblJlc3BvbnNlEkQKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25IABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNgoVV2F0Y2hQcm9tb3Rpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJqChZXYXRjaFByb21vdGlvblJlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24SDAoEdHlwZRgCIAEoCSI2ChVBYm9ydFByb21vdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhgKFkFib3J0UHJvbW90aW9uUmVzcG9uc2UiJAoURGVsZXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCSIXChVEZWxldGVQcm9qZWN0UmVzcG9uc2UiXgoRR2V0UHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRI7CgZmb3JtYXQYAiABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQibwoSR2V0UHJvamVjdFJlc3BvbnNlEkAKB3Byb2plY3QYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCKgAQoTTGlzdFByb2plY3RzUmVxdWVzdBIWCglwYWdlX3NpemUYASABKAVIAIgBARIRCgRwYWdlGAIgASgFSAGIAQESEwoGZmlsdGVyGAMgASgJSAKIAQESCwoDdWlkGAQgAygJEhEKBG1pbmUYBSABKAhIA4gBAUIMCgpfcGFnZV9zaXplQgcKBV9wYWdlQgkKB19maWx0ZXJCBwoFX21pbmUiZgoUTGlzdFByb2plY3RzUmVzcG9uc2USPwoIcHJvamVjdHMYASADKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdBINCgV0b3RhbBgCIAEoBSJnChdHZXRQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEjsKBmZvcm1hdBgCIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKCAQoYR2V0UHJvamVjdENvbmZpZ1Jlc3BvbnNlEk0KDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWdIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiLQoaRGVsZXRlUHJvamVjdENvbmZpZ1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSIdChtEZWxldGVQcm9qZWN0Q29uZmlnUmVzcG9uc2UiLAoZV2F0Y2hQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIncKGldhdGNoUHJvamVjdENvbmZpZ1Jlc3BvbnNlEksKDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWcSDAoEdHlwZRgCIAEoCSJUChVBcHByb3ZlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJEg0KBXN0YWdlGAQgASgJIhgKFkFwcHJvdmVGcmVpZ2h0UmVzcG9uc2UiRAoURGVsZXRlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJIhcKFURlbGV0ZUZyZWlnaHRSZXNwb25zZSJ+ChFHZXRGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWxpYXMYAyABKAkSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0Im8KEkdldEZyZWlnaHRSZXNwb25zZRJACgdmcmVpZ2h0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiJgoTV2F0Y2hGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJImQKFFdhdGNoRnJlaWdodFJlc3BvbnNlEj4KB2ZyZWlnaHQYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodBIMCgR0eXBlGAIgASgJIl8KFVByb21vdGVUb1N0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJEg8KB2ZyZWlnaHQYAyABKAkSFQoNZnJlaWdodF9hbGlhcxgEIAEoCSJcChZQcm9tb3RlVG9TdGFnZVJlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24iYgoYUHJvbW90ZURvd25zdHJlYW1SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkSDwoHZnJlaWdodBgDIAEoCRIVCg1mcmVpZ2h0X2FsaWFzGAQgASgJImAKGVByb21vdGVEb3duc3RyZWFtUmVzcG9uc2USQwoKcHJvbW90aW9ucxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24iigEKE1F1ZXJ5RnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCRIQCghncm91cF9ieRgDIAEoCRINCgVncm91cBgEIAEoCRIQCghvcmRlcl9ieRgFIAEoCRIPCgdyZXZlcnNlGAYgASgIEg8KB29yaWdpbnMYByADKAkiyAEKFFF1ZXJ5RnJlaWdodFJlc3BvbnNlElIKBmdyb3VwcxgBIAMoCzJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlc3BvbnNlLkdyb3Vwc0VudHJ5GlwKC0dyb3Vwc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkZyZWlnaHRMaXN0OgI4ASJNCgtGcmVpZ2h0TGlzdBI+CgdmcmVpZ2h0GAEgAygLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHQiYAoZVXBkYXRlRnJlaWdodEFsaWFzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEQoJb2xkX2FsaWFzGAMgASgJEhEKCW5ld19hbGlhcxgEIAEoCSIcChpVcGRhdGVGcmVpZ2h0QWxpYXNSZXNwb25zZSIxCg9SZXZlcmlmeVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCSISChBSZXZlcmlmeVJlc3BvbnNlIjoKGEFib3J0VmVyaWZpY2F0aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJIhsKGUFib3J0VmVyaWZpY2F0aW9uUmVzcG9uc2UiKAoVTGlzdFdhcmVob3VzZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiXQoWTGlzdFdhcmVob3VzZXNSZXNwb25zZRJDCgp3YXJlaG91c2VzGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZSJxChNHZXRXYXJlaG91c2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQidQoUR2V0V2FyZWhvdXNlUmVzcG9uc2USRAoJd2FyZWhvdXNlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI3ChZXYXRjaFdhcmVob3VzZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJrChdXYXRjaFdhcmVob3VzZXNSZXNwb25zZRJCCgl3YXJlaG91c2UYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlEgwKBHR5cGUYAiABKAkiNwoWRGVsZXRlV2FyZWhvdXNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiGQoXRGVsZXRlV2FyZWhvdXNlUmVzcG9uc2Ui9AEKFkNyZWF0ZUNvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRJQCgRkYXRhGAUgAygLMkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQ29uZmlnTWFwUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAYgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkwKF0NyZWF0ZUNvbmZpZ01hcFJlc3BvbnNlEjEKCmNvbmZpZ19tYXAYASABKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwIk0KFkRlbGV0ZUNvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCSIZChdEZWxldGVDb25maWdNYXBSZXNwb25zZSI+ChVMaXN0Q29uZmlnTWFwc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAIgASgIEg8KB3Byb2plY3QYASABKAkiTAoWTGlzdENvbmZpZ01hcHNSZXNwb25zZRIyCgtjb25maWdfbWFwcxgBIAMoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXAihwEKE0dldENvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAQgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiZAoUR2V0Q29uZmlnTWFwUmVzcG9uc2USMwoKY29uZmlnX21hcBgBIAEoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXBIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQi9AEKFlVwZGF0ZUNvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRJQCgRkYXRhGAUgAygLMkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAYgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkwKF1VwZGF0ZUNvbmZpZ01hcFJlc3BvbnNlEjEKCmNvbmZpZ19tYXAYASABKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwIsoBChxDcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIMCgR0eXBlGAMgASgJEhkKCHJlcG9fdXJsGAQgASgJUgdyZXBvVVJMEikKEXJlcG9fdXJsX2lzX3JlZ2V4GAUgASgIUg5yZXBvVVJMSXNSZWdleBIQCgh1c2VybmFtZRgGIAEoCRIQCghwYXNzd29yZBgHIAEoCSJQCh1DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiPQocRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiHwodRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2UidwoZR2V0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImgKGkdldFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEjEKC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCItChpMaXN0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIk4KG0xpc3RSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiygEKHFVwZGF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAggASgJEgwKBHR5cGUYAyABKAkSGQoIcmVwb191cmwYBCABKAlSB3JlcG9VUkwSKQoRcmVwb191cmxfaXNfcmVnZXgYBSABKAhSDnJlcG9VUkxJc1JlZ2V4EhAKCHVzZXJuYW1lGAYgASgJEhAKCHBhc3N3b3JkGAcgASgJIlAKHVVwZGF0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJGCh1MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAiABKAgSDwoHcHJvamVjdBgBIAEoCSJRCh5MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASADKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IoYCCh9DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgGIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSWQoEZGF0YRgEIAMoCzJLLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgFIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJTCiBDcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQihgIKH1VwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAYgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRJZCgRkYXRhGAQgAygLMksuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAUgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlMKIFVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJWCh9EZWxldGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgDIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiIgogRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2UiLwocTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIoIBCh1MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRJhChJhbmFseXNpc190ZW1wbGF0ZXMYASADKAsyRS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNUZW1wbGF0ZSJ4ChpHZXRBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IpoBChtHZXRBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USYgoRYW5hbHlzaXNfdGVtcGxhdGUYASABKAsyRS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNUZW1wbGF0ZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI+Ch1EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiIAoeRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlIiUKI0xpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0IrMBCiRMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USigEKGmNsdXN0ZXJfYW5hbHlzaXNfdGVtcGxhdGVzGAEgAygLMkwuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUhhjbHVzdGVyYW5hbHlzaXNUZW1wbGF0ZXMibgohR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0EgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IrABCiJHZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEnEKGWNsdXN0ZXJfYW5hbHlzaXNfdGVtcGxhdGUYASABKAsyTC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNAokRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0EgwKBG5hbWUYAiABKAkiJwolRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZSJ1ChVHZXRBbmFseXNpc1J1blJlcXVlc3QSEQoJbmFtZXNwYWNlGAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IosBChZHZXRBbmFseXNpc1J1blJlc3BvbnNlElgKDGFuYWx5c2lzX3J1bhgBIAEoCzJALmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5BbmFseXNpc1J1bkgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJpChlHZXRBbmFseXNpc1J1bkxvZ3NSZXF1ZXN0EhEKCW5hbWVzcGFjZRgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC21ldHJpY19uYW1lGAMgASgJEhYKDmNvbnRhaW5lcl9uYW1lGAQgASgJIisKGkdldEFuYWx5c2lzUnVuTG9nc1Jlc3BvbnNlEg0KBWNodW5rGAEgASgJIisKGExpc3RQcm9qZWN0RXZlbnRzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIkYKGUxpc3RQcm9qZWN0RXZlbnRzUmVzcG9uc2USKQoGZXZlbnRzGAEgAygLMhkuazhzLmlvLmFwaS5jb3JlLnYxLkV2ZW50IiwKGUxpc3RQcm9tb3Rpb25UYXNrc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJqChpMaXN0UHJvbW90aW9uVGFza3NSZXNwb25zZRJMCg9wcm9tb3Rpb25fdGFza3MYASADKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGFzayJ1ChdHZXRQcm9tb3Rpb25UYXNrUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IoIBChhHZXRQcm9tb3Rpb25UYXNrUmVzcG9uc2USTQoOcHJvbW90aW9uX3Rhc2sYASABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGFza0gAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCIiCiBMaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVxdWVzdCKAAQohTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlElsKF2NsdXN0ZXJfcHJvbW90aW9uX3Rhc2tzGAEgAygLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJQcm9tb3Rpb25UYXNrImsKHkdldENsdXN0ZXJQcm9tb3Rpb25UYXNrUmVxdWVzdBIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKmAQofR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXNwb25zZRJqCg5wcm9tb3Rpb25fdGFzaxgBIAEoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyUHJvbW90aW9uVGFza0gAUhRjbHVzdGVyUHJvbW90aW9uVGFzaxINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiUgoRQ3JlYXRlUm9sZVJlcXVlc3QSPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUwoSQ3JlYXRlUm9sZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIjIKEURlbGV0ZVJvbGVSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIUChJEZWxldGVSb2xlUmVzcG9uc2UimAEKDkdldFJvbGVSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgFIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSFAoMYXNfcmVzb3VyY2VzGAMgASgIEjsKBmZvcm1hdBgEIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCK6AQoPR2V0Um9sZVJlc3BvbnNlEj8KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlSAASTQoJcmVzb3VyY2VzGAIgASgLMjguZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZVJlc291cmNlc0gAEg0KA3JhdxgDIAEoDEgAQggKBnJlc3VsdCJKCgZDbGFpbXMSQAoGY2xhaW1zGAEgAygLMjAuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuQ2xhaW0i0QEKDEdyYW50UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBHJvbGUYAiABKAkSPwoLdXNlcl9jbGFpbXMYAyABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DbGFpbXNIABJWChByZXNvdXJjZV9kZXRhaWxzGAQgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUmVzb3VyY2VEZXRhaWxzSABCCQoHcmVxdWVzdCJOCg1HcmFudFJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIk8KEExpc3RSb2xlc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAMgASgIEg8KB3Byb2plY3QYASABKAkSFAoMYXNfcmVzb3VyY2VzGAIgASgIIqABChFMaXN0Um9sZXNSZXNwb25zZRI+CgVyb2xlcxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUSSwoJcmVzb3VyY2VzGAIgAygLMjguZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZVJlc291cmNlcyLSAQoNUmV2b2tlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBHJvbGUYAiABKAkSPwoLdXNlcl9jbGFpbXMYAyABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DbGFpbXNIABJWChByZXNvdXJjZV9kZXRhaWxzGAQgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUmVzb3VyY2VEZXRhaWxzSABCCQoHcmVxdWVzdCJPCg5SZXZva2VSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJSChFVcGRhdGVSb2xlUmVxdWVzdBI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJTChJVcGRhdGVSb2xlUmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiXwoVQ3JlYXRlQVBJVG9rZW5SZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEhEKCXJvbGVfbmFtZRgDIAEoCRIMCgRuYW1lGAQgASgJIkoKFkNyZWF0ZUFQSVRva2VuUmVzcG9uc2USMAoMdG9rZW5fc2VjcmV0GAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJMChVEZWxldGVBUElUb2tlblJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCSIYChZEZWxldGVBUElUb2tlblJlc3BvbnNlIoYBChJHZXRBUElUb2tlblJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCRI7CgZmb3JtYXQYBCABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiYgoTR2V0QVBJVG9rZW5SZXNwb25zZRIyCgx0b2tlbl9zZWNyZXQYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IlAKFExpc3RBUElUb2tlbnNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEhEKCXJvbGVfbmFtZRgDIAEoCSJKChVMaXN0QVBJVG9rZW5zUmVzcG9uc2USMQoNdG9rZW5fc2VjcmV0cxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiTgoWUmVmcmVzaFJlc291cmNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSFQoNcmVzb3VyY2VfdHlwZRgDIAEoCSJBChdSZWZyZXNoUmVzb3VyY2VSZXNwb25zZRImCghyZXNvdXJjZRgBIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkqUQoJUmF3Rm9ybWF0EhoKFlJBV19GT1JNQVRfVU5TUEVDSUZJRUQQABITCg9SQVdfRk9STUFUX0pTT04QARITCg9SQVdfRk9STUFUX1lBTUwQAjKqVgoMS2FyZ29TZXJ2aWNlEoMBCg5HZXRWZXJzaW9uSW5mbxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFZlcnNpb25JbmZvUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFZlcnNpb25JbmZvUmVzcG9uc2USdAoJR2V0Q29uZmlnEjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVxdWVzdBozLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ1Jlc3BvbnNlEoYBCg9HZXRQdWJsaWNDb25maWcSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQdWJsaWNDb25maWdSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHVibGljQ29uZmlnUmVzcG9uc2USdwoKQWRtaW5Mb2dpbhIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFkbWluTG9naW5SZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWRtaW5Mb2dpblJlc3BvbnNlEoMBCg5DcmVhdGVSZXNvdXJjZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzcG9uc2USmwEKFkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2USPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVxdWVzdBpALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXNwb25zZRKDAQoOVXBkYXRlUmVzb3VyY2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXNvdXJjZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXNvdXJjZVJlc3BvbnNlEoMBCg5EZWxldGVSZXNvdXJjZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlc291cmNlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlc291cmNlUmVzcG9uc2UShgEKD1JlZnJlc2hSZXNvdXJjZRI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJlZnJlc2hSZXNvdXJjZVJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZWZyZXNoUmVzb3VyY2VSZXNwb25zZRJ3CgpMaXN0U3RhZ2VzEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFN0YWdlc1JlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VzUmVzcG9uc2USdwoKTGlzdEltYWdlcxIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RJbWFnZXNSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1Jlc3BvbnNlEnEKCEdldFN0YWdlEjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VSZXF1ZXN0GjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VSZXNwb25zZRJ8CgtXYXRjaFN0YWdlcxI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoU3RhZ2VzUmVxdWVzdBo1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoU3RhZ2VzUmVzcG9uc2UwARJ6CgtEZWxldGVTdGFnZRI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVN0YWdlUmVxdWVzdBo1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVN0YWdlUmVzcG9uc2USiQEKEEdldENsdXN0ZXJDb25maWcSOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQ29uZmlnUmVxdWVzdBo6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENsdXN0ZXJDb25maWdSZXNwb25zZRKSAQoTRGVsZXRlQ2x1c3RlckNvbmZpZxI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJDb25maWdSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlEpEBChJXYXRjaENsdXN0ZXJDb25maWcSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaENsdXN0ZXJDb25maWdSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hDbHVzdGVyQ29uZmlnUmVzcG9uc2UwARKDAQoOTGlzdFByb21vdGlvbnMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uc1Jlc3BvbnNlEogBCg9XYXRjaFByb21vdGlvbnMSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb21vdGlvbnNSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25zUmVzcG9uc2UwARJ9CgxHZXRQcm9tb3Rpb24SNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25SZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uUmVzcG9uc2UShQEKDldhdGNoUHJvbW90aW9uEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25SZXNwb25zZTABEoMBCg5BYm9ydFByb21vdGlvbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0UHJvbW90aW9uUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0UHJvbW90aW9uUmVzcG9uc2USgAEKDURlbGV0ZVByb2plY3QSNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0UmVxdWVzdBo3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RSZXNwb25zZRJ3CgpHZXRQcm9qZWN0EjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdFJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9qZWN0UmVzcG9uc2USfQoMTGlzdFByb2plY3RzEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RzUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0c1Jlc3BvbnNlEokBChBHZXRQcm9qZWN0Q29uZmlnEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdENvbmZpZ1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9qZWN0Q29uZmlnUmVzcG9uc2USkgEKE0RlbGV0ZVByb2plY3RDb25maWcSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0Q29uZmlnUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RDb25maWdSZXNwb25zZRKRAQoSV2F0Y2hQcm9qZWN0Q29uZmlnEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9qZWN0Q29uZmlnUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvamVjdENvbmZpZ1Jlc3BvbnNlMAESgwEKDkFwcHJvdmVGcmVpZ2h0EjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQXBwcm92ZUZyZWlnaHRSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQXBwcm92ZUZyZWlnaHRSZXNwb25zZRKAAQoNRGVsZXRlRnJlaWdodBI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUZyZWlnaHRSZXF1ZXN0GjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlRnJlaWdodFJlc3BvbnNlEncKCkdldEZyZWlnaHQSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRGcmVpZ2h0UmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEZyZWlnaHRSZXNwb25zZRJ/CgxXYXRjaEZyZWlnaHQSNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaEZyZWlnaHRSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hGcmVpZ2h0UmVzcG9uc2UwARKDAQoOUHJvbW90ZVRvU3RhZ2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlVG9TdGFnZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlVG9TdGFnZVJlc3BvbnNlEowBChFQcm9tb3RlRG93bnN0cmVhbRI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVEb3duc3RyZWFtUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVEb3duc3RyZWFtUmVzcG9uc2USfQoMUXVlcnlGcmVpZ2h0EjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUXVlcnlGcmVpZ2h0UmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlc3BvbnNlEo8BChJVcGRhdGVGcmVpZ2h0QWxpYXMSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVGcmVpZ2h0QWxpYXNSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlRnJlaWdodEFsaWFzUmVzcG9uc2UScQoIUmV2ZXJpZnkSMS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZlcmlmeVJlcXVlc3QaMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZlcmlmeVJlc3BvbnNlEowBChFBYm9ydFZlcmlmaWNhdGlvbhI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0VmVyaWZpY2F0aW9uUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0VmVyaWZpY2F0aW9uUmVzcG9uc2USgwEKDkxpc3RXYXJlaG91c2VzEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFdhcmVob3VzZXNSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFdhcmVob3VzZXNSZXNwb25zZRJ9CgxHZXRXYXJlaG91c2USNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRXYXJlaG91c2VSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0V2FyZWhvdXNlUmVzcG9uc2USiAEKD1dhdGNoV2FyZWhvdXNlcxI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoV2FyZWhvdXNlc1JlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFdhcmVob3VzZXNSZXNwb25zZTABEoYBCg9EZWxldGVXYXJlaG91c2USOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVXYXJlaG91c2VSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlV2FyZWhvdXNlUmVzcG9uc2USmAEKFUNyZWF0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKYAQoVRGVsZXRlUmVwb0NyZWRlbnRpYWxzEj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEo8BChJHZXRSZXBvQ3JlZGVudGlhbHMSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USkgEKE0xpc3RSZXBvQ3JlZGVudGlhbHMSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKYAQoVVXBkYXRlUmVwb0NyZWRlbnRpYWxzEj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEpsBChZMaXN0R2VuZXJpY0NyZWRlbnRpYWxzEj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USoQEKGENyZWF0ZUdlbmVyaWNDcmVkZW50aWFscxJBLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRKhAQoYVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzEkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBpCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEqEBChhEZWxldGVHZW5lcmljQ3JlZGVudGlhbHMSQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2UShgEKD0NyZWF0ZUNvbmZpZ01hcBI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUNvbmZpZ01hcFJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVDb25maWdNYXBSZXNwb25zZRKGAQoPRGVsZXRlQ29uZmlnTWFwEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ29uZmlnTWFwUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNvbmZpZ01hcFJlc3BvbnNlEoMBCg5MaXN0Q29uZmlnTWFwcxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDb25maWdNYXBzUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDb25maWdNYXBzUmVzcG9uc2USfQoMR2V0Q29uZmlnTWFwEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnTWFwUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ01hcFJlc3BvbnNlEoYBCg9VcGRhdGVDb25maWdNYXASOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVDb25maWdNYXBSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVzcG9uc2USmAEKFUxpc3RBbmFseXNpc1RlbXBsYXRlcxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRKSAQoTR2V0QW5hbHlzaXNUZW1wbGF0ZRI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEpsBChZEZWxldGVBbmFseXNpc1RlbXBsYXRlEj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USrQEKHExpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXMSRS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdBpGLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRKnAQoaR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGUSQy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaRC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlErABCh1EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZRJGLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBpHLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USgwEKDkdldEFuYWx5c2lzUnVuEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5SZXNwb25zZRKRAQoSR2V0QW5hbHlzaXNSdW5Mb2dzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5Mb2dzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuTG9nc1Jlc3BvbnNlMAESjAEKEUxpc3RQcm9qZWN0RXZlbnRzEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RFdmVudHNSZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RFdmVudHNSZXNwb25zZRKPAQoSTGlzdFByb21vdGlvblRhc2tzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvblRhc2tzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEqQBChlMaXN0Q2x1c3RlclByb21vdGlvblRhc2tzEkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1JlcXVlc3QaQy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVzcG9uc2USiQEKEEdldFByb21vdGlvblRhc2sSOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25UYXNrUmVxdWVzdBo6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblRhc2tSZXNwb25zZRKeAQoXR2V0Q2x1c3RlclByb21vdGlvblRhc2sSQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyUHJvbW90aW9uVGFza1JlcXVlc3QaQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyUHJvbW90aW9uVGFza1Jlc3BvbnNlEncKCkNyZWF0ZVJvbGUSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSb2xlUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJvbGVSZXNwb25zZRJ3CgpEZWxldGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSb2xlUmVzcG9uc2USbgoHR2V0Um9sZRIwLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJvbGVSZXF1ZXN0GjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Um9sZVJlc3BvbnNlEmgKBUdyYW50Ei4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR3JhbnRSZXF1ZXN0Gi8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR3JhbnRSZXNwb25zZRJ0CglMaXN0Um9sZXMSMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Um9sZXNSZXF1ZXN0GjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJvbGVzUmVzcG9uc2USawoGUmV2b2tlEi8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2b2tlUmVxdWVzdBowLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldm9rZVJlc3BvbnNlEncKClVwZGF0ZVJvbGUSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSb2xlUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJvbGVSZXNwb25zZRKDAQoOQ3JlYXRlQVBJVG9rZW4SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVBUElUb2tlblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVBUElUb2tlblJlc3BvbnNlEoMBCg5EZWxldGVBUElUb2tlbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFQSVRva2VuUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFQSVRva2VuUmVzcG9uc2USegoLR2V0QVBJVG9rZW4SNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBUElUb2tlblJlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBUElUb2tlblJlc3BvbnNlEoABCg1MaXN0QVBJVG9rZW5zEjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFQSVRva2Vuc1JlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QVBJVG9rZW5zUmVzcG9uc2VCkwIKJGNvbS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMUIMU2VydmljZVByb3RvUAFaOGdpdGh1Yi5jb20vYWt1aXR5L2thcmdvL2FwaS9zZXJ2aWNlL3YxYWxwaGExO3N2Y3YxYWxwaGExogIEQUlLU6oCIEFrdWl0eS5Jby5LYXJnby5TZXJ2aWNlLlYxYWxwaGExygIgQWt1aXR5XElvXEthcmdvXFNlcnZpY2VcVjFhbHBoYTHiAixBa3VpdHlcSW9cS2FyZ29cU2VydmljZVxWMWFscGhhMVxHUEJNZXRhZGF0YeoCJEFrdWl0eTo6SW86OkthcmdvOjpTZXJ2aWNlOjpWMWFscGhhMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_api_v1alpha1_generated, file_k8s_io_api_core_v1_generated, file_api_stubs_rollouts_v1alpha1_generated, file_api_rbac_v1alpha1_generated, file_google_protobuf_any]); + fileDesc("CiJhcGkvc2VydmljZS92MWFscGhhMS9zZXJ2aWNlLnByb3RvEiBha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMSKrAQoRQ29tcG9uZW50VmVyc2lvbnMSQgoGc2VydmVyGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm9IAIgBARI/CgNjbGkYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5WZXJzaW9uSW5mb0gBiAEBQgkKB19zZXJ2ZXJCBgoEX2NsaSKyAQoLVmVyc2lvbkluZm8SDwoHdmVyc2lvbhgBIAEoCRISCgpnaXRfY29tbWl0GAIgASgJEhYKDmdpdF90cmVlX2RpcnR5GAMgASgIEi4KCmJ1aWxkX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdvX3ZlcnNpb24YBSABKAkSEAoIY29tcGlsZXIYBiABKAkSEAoIcGxhdGZvcm0YByABKAkiFwoVR2V0VmVyc2lvbkluZm9SZXF1ZXN0Il0KFkdldFZlcnNpb25JbmZvUmVzcG9uc2USQwoMdmVyc2lvbl9pbmZvGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm8iEgoQR2V0Q29uZmlnUmVxdWVzdCItCgtBcmdvQ0RTaGFyZBILCgN1cmwYASABKAkSEQoJbmFtZXNwYWNlGAIgASgJIsgCChFHZXRDb25maWdSZXNwb25zZRJcCg1hcmdvY2Rfc2hhcmRzGAEgAygLMkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UuQXJnb2NkU2hhcmRzRW50cnkSIQoZc2VjcmV0X21hbmFnZW1lbnRfZW5hYmxlZBgCIAEoCBIiChpzeXN0ZW1fcmVzb3VyY2VzX25hbWVzcGFjZRgDIAEoCRIqCiJoYXNfYW5hbHlzaXNfcnVuX2xvZ3NfdXJsX3RlbXBsYXRlGAQgASgIGmIKEUFyZ29jZFNoYXJkc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFyZ29DRFNoYXJkOgI4ASIYChZHZXRQdWJsaWNDb25maWdSZXF1ZXN0Io4BChdHZXRQdWJsaWNDb25maWdSZXNwb25zZRJBCgtvaWRjX2NvbmZpZxgBIAEoCzIsLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLk9JRENDb25maWcSHQoVYWRtaW5fYWNjb3VudF9lbmFibGVkGAIgASgIEhEKCXNraXBfYXV0aBgDIAEoCCJaCgpPSURDQ29uZmlnEhIKCmlzc3Vlcl91cmwYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1jbGlfY2xpZW50X2lkGAQgASgJIiUKEUFkbWluTG9naW5SZXF1ZXN0EhAKCHBhc3N3b3JkGAEgASgJIiYKEkFkbWluTG9naW5SZXNwb25zZRIQCghpZF90b2tlbhgBIAEoCSIpChVDcmVhdGVSZXNvdXJjZVJlcXVlc3QSEAoIbWFuaWZlc3QYASABKAwiVgoUQ3JlYXRlUmVzb3VyY2VSZXN1bHQSIwoZY3JlYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgBIAEoDEgAEg8KBWVycm9yGAIgASgJSABCCAoGcmVzdWx0ImEKFkNyZWF0ZVJlc291cmNlUmVzcG9uc2USRwoHcmVzdWx0cxgBIAMoCzI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzdWx0IjEKHUNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIoMBChxDcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0EiMKGWNyZWF0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAIgASgMSAASDwoFZXJyb3IYAyABKAlIAEIICgZyZXN1bHQicQoeQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEk8KB3Jlc3VsdHMYASADKAsyPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0IikKFVVwZGF0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCJWChRVcGRhdGVSZXNvdXJjZVJlc3VsdBIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASDwoFZXJyb3IYAiABKAlIAEIICgZyZXN1bHQiYQoWVXBkYXRlUmVzb3VyY2VSZXNwb25zZRJHCgdyZXN1bHRzGAEgAygLMjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXN1bHQiKQoVRGVsZXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIlYKFERlbGV0ZVJlc291cmNlUmVzdWx0EiMKGWRlbGV0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIPCgVlcnJvchgCIAEoCUgAQggKBnJlc3VsdCJhChZEZWxldGVSZXNvdXJjZVJlc3BvbnNlEkcKB3Jlc3VsdHMYASADKAsyNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3VsdCIkChFMaXN0U3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIlEKEkxpc3RTdGFnZXNSZXNwb25zZRI7CgZzdGFnZXMYASADKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2UiJAoRTGlzdEltYWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSK/AQoSTGlzdEltYWdlc1Jlc3BvbnNlElAKBmltYWdlcxgCIAMoCzJALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RJbWFnZXNSZXNwb25zZS5JbWFnZXNFbnRyeRpXCgtJbWFnZXNFbnRyeRILCgNrZXkYASABKAkSNwoFdmFsdWUYAiABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5UYWdNYXA6AjgBIqgBCgZUYWdNYXASQAoEdGFncxgBIAMoCzIyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlRhZ01hcC5UYWdzRW50cnkaXAoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRI+CgV2YWx1ZRgCIAEoCzIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkltYWdlU3RhZ2VNYXA6AjgBIosBCg1JbWFnZVN0YWdlTWFwEksKBnN0YWdlcxgBIAMoCzI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkltYWdlU3RhZ2VNYXAuU3RhZ2VzRW50cnkaLQoLU3RhZ2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ASJtCg9HZXRTdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJpChBHZXRTdGFnZVJlc3BvbnNlEjwKBXN0YWdlGAEgASgLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0YWdlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjMKEldhdGNoU3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiXwoTV2F0Y2hTdGFnZXNSZXNwb25zZRI6CgVzdGFnZRgBIAEoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZRIMCgR0eXBlGAIgASgJIjMKEkRlbGV0ZVN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiFQoTRGVsZXRlU3RhZ2VSZXNwb25zZSKKAgoMU3RhZ2VTdW1tYXJ5EkcKCG1ldGFkYXRhGAEgASgLMjAuazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLk9iamVjdE1ldGFIAIgBARJFCgRzcGVjGAIgASgLMjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuU3RhZ2VTcGVjU3VtbWFyeUgBiAEBEkkKBnN0YXR1cxgDIAEoCzI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlN0YWdlU3RhdHVzU3VtbWFyeUgCiAEBQgsKCV9tZXRhZGF0YUIHCgVfc3BlY0IJCgdfc3RhdHVzIqYBChBTdGFnZVNwZWNTdW1tYXJ5Eg0KBXNoYXJkGAEgASgJEk4KEHJlcXVlc3RlZEZyZWlnaHQYAiADKAsyNC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodFJlcXVlc3QSGgoScHJvbW90aW9uU3RlcENvdW50GAMgASgFEhcKD2hhc1ZlcmlmaWNhdGlvbhgEIAEoCCK8BAoSU3RhZ2VTdGF0dXNTdW1tYXJ5EkMKCmNvbmRpdGlvbnMYASADKAsyLy5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuQ29uZGl0aW9uEhoKEmxhc3RIYW5kbGVkUmVmcmVzaBgCIAEoCRJUCg5jdXJyZW50RnJlaWdodBgDIAEoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0Q29sbGVjdGlvbkgAiAEBElcKEGN1cnJlbnRQcm9tb3Rpb24YBCABKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uUmVmZXJlbmNlSAGIAQESVAoNbGFzdFByb21vdGlvbhgFIAEoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25SZWZlcmVuY2VIAogBARJBCgZoZWFsdGgYBiABKAsyLC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuSGVhbHRoSAOIAQESGgoSb2JzZXJ2ZWRHZW5lcmF0aW9uGAcgASgDEhwKFGF1dG9Qcm9tb3Rpb25FbmFibGVkGAggASgIQhEKD19jdXJyZW50RnJlaWdodEITChFfY3VycmVudFByb21vdGlvbkIQCg5fbGFzdFByb21vdGlvbkIJCgdfaGVhbHRoIkQKGUxpc3RTdGFnZVN1bW1hcmllc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIWCg5mcmVpZ2h0T3JpZ2lucxgCIAMoCSJ9ChpMaXN0U3RhZ2VTdW1tYXJpZXNSZXNwb25zZRJGCg5zdGFnZVN1bW1hcmllcxgBIAMoCzIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlN0YWdlU3VtbWFyeRIXCg9yZXNvdXJjZVZlcnNpb24YAiABKAkibAoaV2F0Y2hTdGFnZVN1bW1hcmllc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhYKDmZyZWlnaHRPcmlnaW5zGAMgAygJEhcKD3Jlc291cmNlVmVyc2lvbhgEIAEoCSKHAQobV2F0Y2hTdGFnZVN1bW1hcmllc1Jlc3BvbnNlEkkKDHN0YWdlU3VtbWFyeRgBIAEoCzIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlN0YWdlU3VtbWFyeUgAiAEBEgwKBHR5cGUYAiABKAlCDwoNX3N0YWdlU3VtbWFyeSJWChdHZXRDbHVzdGVyQ29uZmlnUmVxdWVzdBI7CgZmb3JtYXQYASABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiggEKGEdldENsdXN0ZXJDb25maWdSZXNwb25zZRJNCg5jbHVzdGVyX2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyQ29uZmlnSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IhwKGkRlbGV0ZUNsdXN0ZXJDb25maWdSZXF1ZXN0Ih0KG0RlbGV0ZUNsdXN0ZXJDb25maWdSZXNwb25zZSIbChlXYXRjaENsdXN0ZXJDb25maWdSZXF1ZXN0IncKGldhdGNoQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlEksKDmNsdXN0ZXJfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJDb25maWcSDAoEdHlwZRgCIAEoCSJGChVMaXN0UHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJdChZMaXN0UHJvbW90aW9uc1Jlc3BvbnNlEkMKCnByb21vdGlvbnMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uIkcKFldhdGNoUHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJrChdXYXRjaFByb21vdGlvbnNSZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uEgwKBHR5cGUYAiABKAkicQoTR2V0UHJvbW90aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0InUKFEdldFByb21vdGlvblJlc3BvbnNlEkQKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25IABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNgoVV2F0Y2hQcm9tb3Rpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJqChZXYXRjaFByb21vdGlvblJlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24SDAoEdHlwZRgCIAEoCSI2ChVBYm9ydFByb21vdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhgKFkFib3J0UHJvbW90aW9uUmVzcG9uc2UiJAoURGVsZXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCSIXChVEZWxldGVQcm9qZWN0UmVzcG9uc2UiXgoRR2V0UHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRI7CgZmb3JtYXQYAiABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQibwoSR2V0UHJvamVjdFJlc3BvbnNlEkAKB3Byb2plY3QYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCKgAQoTTGlzdFByb2plY3RzUmVxdWVzdBIWCglwYWdlX3NpemUYASABKAVIAIgBARIRCgRwYWdlGAIgASgFSAGIAQESEwoGZmlsdGVyGAMgASgJSAKIAQESCwoDdWlkGAQgAygJEhEKBG1pbmUYBSABKAhIA4gBAUIMCgpfcGFnZV9zaXplQgcKBV9wYWdlQgkKB19maWx0ZXJCBwoFX21pbmUiZgoUTGlzdFByb2plY3RzUmVzcG9uc2USPwoIcHJvamVjdHMYASADKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdBINCgV0b3RhbBgCIAEoBSJnChdHZXRQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEjsKBmZvcm1hdBgCIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKCAQoYR2V0UHJvamVjdENvbmZpZ1Jlc3BvbnNlEk0KDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWdIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiLQoaRGVsZXRlUHJvamVjdENvbmZpZ1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSIdChtEZWxldGVQcm9qZWN0Q29uZmlnUmVzcG9uc2UiLAoZV2F0Y2hQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIncKGldhdGNoUHJvamVjdENvbmZpZ1Jlc3BvbnNlEksKDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWcSDAoEdHlwZRgCIAEoCSJUChVBcHByb3ZlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJEg0KBXN0YWdlGAQgASgJIhgKFkFwcHJvdmVGcmVpZ2h0UmVzcG9uc2UiRAoURGVsZXRlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJIhcKFURlbGV0ZUZyZWlnaHRSZXNwb25zZSJ+ChFHZXRGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWxpYXMYAyABKAkSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0Im8KEkdldEZyZWlnaHRSZXNwb25zZRJACgdmcmVpZ2h0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiJgoTV2F0Y2hGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJImQKFFdhdGNoRnJlaWdodFJlc3BvbnNlEj4KB2ZyZWlnaHQYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodBIMCgR0eXBlGAIgASgJIl8KFVByb21vdGVUb1N0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJEg8KB2ZyZWlnaHQYAyABKAkSFQoNZnJlaWdodF9hbGlhcxgEIAEoCSJcChZQcm9tb3RlVG9TdGFnZVJlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24iYgoYUHJvbW90ZURvd25zdHJlYW1SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkSDwoHZnJlaWdodBgDIAEoCRIVCg1mcmVpZ2h0X2FsaWFzGAQgASgJImAKGVByb21vdGVEb3duc3RyZWFtUmVzcG9uc2USQwoKcHJvbW90aW9ucxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24iigEKE1F1ZXJ5RnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCRIQCghncm91cF9ieRgDIAEoCRINCgVncm91cBgEIAEoCRIQCghvcmRlcl9ieRgFIAEoCRIPCgdyZXZlcnNlGAYgASgIEg8KB29yaWdpbnMYByADKAkiyAEKFFF1ZXJ5RnJlaWdodFJlc3BvbnNlElIKBmdyb3VwcxgBIAMoCzJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlc3BvbnNlLkdyb3Vwc0VudHJ5GlwKC0dyb3Vwc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkZyZWlnaHRMaXN0OgI4ASJNCgtGcmVpZ2h0TGlzdBI+CgdmcmVpZ2h0GAEgAygLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHQiYAoZVXBkYXRlRnJlaWdodEFsaWFzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEQoJb2xkX2FsaWFzGAMgASgJEhEKCW5ld19hbGlhcxgEIAEoCSIcChpVcGRhdGVGcmVpZ2h0QWxpYXNSZXNwb25zZSIxCg9SZXZlcmlmeVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCSISChBSZXZlcmlmeVJlc3BvbnNlIjoKGEFib3J0VmVyaWZpY2F0aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJIhsKGUFib3J0VmVyaWZpY2F0aW9uUmVzcG9uc2UiKAoVTGlzdFdhcmVob3VzZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiXQoWTGlzdFdhcmVob3VzZXNSZXNwb25zZRJDCgp3YXJlaG91c2VzGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZSJxChNHZXRXYXJlaG91c2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQidQoUR2V0V2FyZWhvdXNlUmVzcG9uc2USRAoJd2FyZWhvdXNlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI3ChZXYXRjaFdhcmVob3VzZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJrChdXYXRjaFdhcmVob3VzZXNSZXNwb25zZRJCCgl3YXJlaG91c2UYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlEgwKBHR5cGUYAiABKAkiNwoWRGVsZXRlV2FyZWhvdXNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiGQoXRGVsZXRlV2FyZWhvdXNlUmVzcG9uc2Ui9AEKFkNyZWF0ZUNvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRJQCgRkYXRhGAUgAygLMkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQ29uZmlnTWFwUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAYgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkwKF0NyZWF0ZUNvbmZpZ01hcFJlc3BvbnNlEjEKCmNvbmZpZ19tYXAYASABKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwIk0KFkRlbGV0ZUNvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCSIZChdEZWxldGVDb25maWdNYXBSZXNwb25zZSI+ChVMaXN0Q29uZmlnTWFwc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAIgASgIEg8KB3Byb2plY3QYASABKAkiTAoWTGlzdENvbmZpZ01hcHNSZXNwb25zZRIyCgtjb25maWdfbWFwcxgBIAMoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXAihwEKE0dldENvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAQgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiZAoUR2V0Q29uZmlnTWFwUmVzcG9uc2USMwoKY29uZmlnX21hcBgBIAEoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXBIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQi9AEKFlVwZGF0ZUNvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRJQCgRkYXRhGAUgAygLMkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAYgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkwKF1VwZGF0ZUNvbmZpZ01hcFJlc3BvbnNlEjEKCmNvbmZpZ19tYXAYASABKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwIsoBChxDcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIMCgR0eXBlGAMgASgJEhkKCHJlcG9fdXJsGAQgASgJUgdyZXBvVVJMEikKEXJlcG9fdXJsX2lzX3JlZ2V4GAUgASgIUg5yZXBvVVJMSXNSZWdleBIQCgh1c2VybmFtZRgGIAEoCRIQCghwYXNzd29yZBgHIAEoCSJQCh1DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiPQocRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiHwodRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2UidwoZR2V0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImgKGkdldFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEjEKC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCItChpMaXN0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIk4KG0xpc3RSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiygEKHFVwZGF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAggASgJEgwKBHR5cGUYAyABKAkSGQoIcmVwb191cmwYBCABKAlSB3JlcG9VUkwSKQoRcmVwb191cmxfaXNfcmVnZXgYBSABKAhSDnJlcG9VUkxJc1JlZ2V4EhAKCHVzZXJuYW1lGAYgASgJEhAKCHBhc3N3b3JkGAcgASgJIlAKHVVwZGF0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJGCh1MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAiABKAgSDwoHcHJvamVjdBgBIAEoCSJRCh5MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASADKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IoYCCh9DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgGIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSWQoEZGF0YRgEIAMoCzJLLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgFIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJTCiBDcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQihgIKH1VwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAYgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRJZCgRkYXRhGAQgAygLMksuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAUgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlMKIFVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJWCh9EZWxldGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgDIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiIgogRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2UiLwocTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIoIBCh1MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRJhChJhbmFseXNpc190ZW1wbGF0ZXMYASADKAsyRS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNUZW1wbGF0ZSJ4ChpHZXRBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IpoBChtHZXRBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USYgoRYW5hbHlzaXNfdGVtcGxhdGUYASABKAsyRS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNUZW1wbGF0ZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI+Ch1EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiIAoeRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlIiUKI0xpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0IrMBCiRMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USigEKGmNsdXN0ZXJfYW5hbHlzaXNfdGVtcGxhdGVzGAEgAygLMkwuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUhhjbHVzdGVyYW5hbHlzaXNUZW1wbGF0ZXMibgohR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0EgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IrABCiJHZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEnEKGWNsdXN0ZXJfYW5hbHlzaXNfdGVtcGxhdGUYASABKAsyTC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNAokRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0EgwKBG5hbWUYAiABKAkiJwolRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZSJ1ChVHZXRBbmFseXNpc1J1blJlcXVlc3QSEQoJbmFtZXNwYWNlGAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IosBChZHZXRBbmFseXNpc1J1blJlc3BvbnNlElgKDGFuYWx5c2lzX3J1bhgBIAEoCzJALmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5BbmFseXNpc1J1bkgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJpChlHZXRBbmFseXNpc1J1bkxvZ3NSZXF1ZXN0EhEKCW5hbWVzcGFjZRgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC21ldHJpY19uYW1lGAMgASgJEhYKDmNvbnRhaW5lcl9uYW1lGAQgASgJIisKGkdldEFuYWx5c2lzUnVuTG9nc1Jlc3BvbnNlEg0KBWNodW5rGAEgASgJIisKGExpc3RQcm9qZWN0RXZlbnRzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIkYKGUxpc3RQcm9qZWN0RXZlbnRzUmVzcG9uc2USKQoGZXZlbnRzGAEgAygLMhkuazhzLmlvLmFwaS5jb3JlLnYxLkV2ZW50IiwKGUxpc3RQcm9tb3Rpb25UYXNrc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJqChpMaXN0UHJvbW90aW9uVGFza3NSZXNwb25zZRJMCg9wcm9tb3Rpb25fdGFza3MYASADKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGFzayJ1ChdHZXRQcm9tb3Rpb25UYXNrUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IoIBChhHZXRQcm9tb3Rpb25UYXNrUmVzcG9uc2USTQoOcHJvbW90aW9uX3Rhc2sYASABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGFza0gAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCIiCiBMaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVxdWVzdCKAAQohTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlElsKF2NsdXN0ZXJfcHJvbW90aW9uX3Rhc2tzGAEgAygLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJQcm9tb3Rpb25UYXNrImsKHkdldENsdXN0ZXJQcm9tb3Rpb25UYXNrUmVxdWVzdBIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKmAQofR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXNwb25zZRJqCg5wcm9tb3Rpb25fdGFzaxgBIAEoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyUHJvbW90aW9uVGFza0gAUhRjbHVzdGVyUHJvbW90aW9uVGFzaxINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiUgoRQ3JlYXRlUm9sZVJlcXVlc3QSPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUwoSQ3JlYXRlUm9sZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIjIKEURlbGV0ZVJvbGVSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIUChJEZWxldGVSb2xlUmVzcG9uc2UimAEKDkdldFJvbGVSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgFIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSFAoMYXNfcmVzb3VyY2VzGAMgASgIEjsKBmZvcm1hdBgEIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCK6AQoPR2V0Um9sZVJlc3BvbnNlEj8KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlSAASTQoJcmVzb3VyY2VzGAIgASgLMjguZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZVJlc291cmNlc0gAEg0KA3JhdxgDIAEoDEgAQggKBnJlc3VsdCJKCgZDbGFpbXMSQAoGY2xhaW1zGAEgAygLMjAuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuQ2xhaW0i0QEKDEdyYW50UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBHJvbGUYAiABKAkSPwoLdXNlcl9jbGFpbXMYAyABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DbGFpbXNIABJWChByZXNvdXJjZV9kZXRhaWxzGAQgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUmVzb3VyY2VEZXRhaWxzSABCCQoHcmVxdWVzdCJOCg1HcmFudFJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIk8KEExpc3RSb2xlc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAMgASgIEg8KB3Byb2plY3QYASABKAkSFAoMYXNfcmVzb3VyY2VzGAIgASgIIqABChFMaXN0Um9sZXNSZXNwb25zZRI+CgVyb2xlcxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUSSwoJcmVzb3VyY2VzGAIgAygLMjguZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZVJlc291cmNlcyLSAQoNUmV2b2tlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBHJvbGUYAiABKAkSPwoLdXNlcl9jbGFpbXMYAyABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DbGFpbXNIABJWChByZXNvdXJjZV9kZXRhaWxzGAQgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUmVzb3VyY2VEZXRhaWxzSABCCQoHcmVxdWVzdCJPCg5SZXZva2VSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJSChFVcGRhdGVSb2xlUmVxdWVzdBI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJTChJVcGRhdGVSb2xlUmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiXwoVQ3JlYXRlQVBJVG9rZW5SZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEhEKCXJvbGVfbmFtZRgDIAEoCRIMCgRuYW1lGAQgASgJIkoKFkNyZWF0ZUFQSVRva2VuUmVzcG9uc2USMAoMdG9rZW5fc2VjcmV0GAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJMChVEZWxldGVBUElUb2tlblJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCSIYChZEZWxldGVBUElUb2tlblJlc3BvbnNlIoYBChJHZXRBUElUb2tlblJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCRI7CgZmb3JtYXQYBCABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiYgoTR2V0QVBJVG9rZW5SZXNwb25zZRIyCgx0b2tlbl9zZWNyZXQYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IlAKFExpc3RBUElUb2tlbnNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEhEKCXJvbGVfbmFtZRgDIAEoCSJKChVMaXN0QVBJVG9rZW5zUmVzcG9uc2USMQoNdG9rZW5fc2VjcmV0cxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiTgoWUmVmcmVzaFJlc291cmNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSFQoNcmVzb3VyY2VfdHlwZRgDIAEoCSJBChdSZWZyZXNoUmVzb3VyY2VSZXNwb25zZRImCghyZXNvdXJjZRgBIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkqUQoJUmF3Rm9ybWF0EhoKFlJBV19GT1JNQVRfVU5TUEVDSUZJRUQQABITCg9SQVdfRk9STUFUX0pTT04QARITCg9SQVdfRk9STUFUX1lBTUwQAjLTWAoMS2FyZ29TZXJ2aWNlEoMBCg5HZXRWZXJzaW9uSW5mbxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFZlcnNpb25JbmZvUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFZlcnNpb25JbmZvUmVzcG9uc2USdAoJR2V0Q29uZmlnEjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVxdWVzdBozLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ1Jlc3BvbnNlEoYBCg9HZXRQdWJsaWNDb25maWcSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQdWJsaWNDb25maWdSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHVibGljQ29uZmlnUmVzcG9uc2USdwoKQWRtaW5Mb2dpbhIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFkbWluTG9naW5SZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWRtaW5Mb2dpblJlc3BvbnNlEoMBCg5DcmVhdGVSZXNvdXJjZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzcG9uc2USmwEKFkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2USPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVxdWVzdBpALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXNwb25zZRKDAQoOVXBkYXRlUmVzb3VyY2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXNvdXJjZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXNvdXJjZVJlc3BvbnNlEoMBCg5EZWxldGVSZXNvdXJjZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlc291cmNlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlc291cmNlUmVzcG9uc2UShgEKD1JlZnJlc2hSZXNvdXJjZRI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJlZnJlc2hSZXNvdXJjZVJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZWZyZXNoUmVzb3VyY2VSZXNwb25zZRJ3CgpMaXN0U3RhZ2VzEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFN0YWdlc1JlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VzUmVzcG9uc2USjwEKEkxpc3RTdGFnZVN1bW1hcmllcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RTdGFnZVN1bW1hcmllc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VTdW1tYXJpZXNSZXNwb25zZRJ3CgpMaXN0SW1hZ2VzEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1JlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0SW1hZ2VzUmVzcG9uc2UScQoIR2V0U3RhZ2USMS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlcXVlc3QaMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlc3BvbnNlEnwKC1dhdGNoU3RhZ2VzEjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZXNSZXF1ZXN0GjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZXNSZXNwb25zZTABEpQBChNXYXRjaFN0YWdlU3VtbWFyaWVzEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZVN1bW1hcmllc1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFN0YWdlU3VtbWFyaWVzUmVzcG9uc2UwARJ6CgtEZWxldGVTdGFnZRI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVN0YWdlUmVxdWVzdBo1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVN0YWdlUmVzcG9uc2USiQEKEEdldENsdXN0ZXJDb25maWcSOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQ29uZmlnUmVxdWVzdBo6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENsdXN0ZXJDb25maWdSZXNwb25zZRKSAQoTRGVsZXRlQ2x1c3RlckNvbmZpZxI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJDb25maWdSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlEpEBChJXYXRjaENsdXN0ZXJDb25maWcSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaENsdXN0ZXJDb25maWdSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hDbHVzdGVyQ29uZmlnUmVzcG9uc2UwARKDAQoOTGlzdFByb21vdGlvbnMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uc1Jlc3BvbnNlEogBCg9XYXRjaFByb21vdGlvbnMSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb21vdGlvbnNSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25zUmVzcG9uc2UwARJ9CgxHZXRQcm9tb3Rpb24SNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25SZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uUmVzcG9uc2UShQEKDldhdGNoUHJvbW90aW9uEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25SZXNwb25zZTABEoMBCg5BYm9ydFByb21vdGlvbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0UHJvbW90aW9uUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0UHJvbW90aW9uUmVzcG9uc2USgAEKDURlbGV0ZVByb2plY3QSNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0UmVxdWVzdBo3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RSZXNwb25zZRJ3CgpHZXRQcm9qZWN0EjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdFJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9qZWN0UmVzcG9uc2USfQoMTGlzdFByb2plY3RzEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RzUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0c1Jlc3BvbnNlEokBChBHZXRQcm9qZWN0Q29uZmlnEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdENvbmZpZ1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9qZWN0Q29uZmlnUmVzcG9uc2USkgEKE0RlbGV0ZVByb2plY3RDb25maWcSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0Q29uZmlnUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RDb25maWdSZXNwb25zZRKRAQoSV2F0Y2hQcm9qZWN0Q29uZmlnEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9qZWN0Q29uZmlnUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvamVjdENvbmZpZ1Jlc3BvbnNlMAESgwEKDkFwcHJvdmVGcmVpZ2h0EjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQXBwcm92ZUZyZWlnaHRSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQXBwcm92ZUZyZWlnaHRSZXNwb25zZRKAAQoNRGVsZXRlRnJlaWdodBI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUZyZWlnaHRSZXF1ZXN0GjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlRnJlaWdodFJlc3BvbnNlEncKCkdldEZyZWlnaHQSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRGcmVpZ2h0UmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEZyZWlnaHRSZXNwb25zZRJ/CgxXYXRjaEZyZWlnaHQSNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaEZyZWlnaHRSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hGcmVpZ2h0UmVzcG9uc2UwARKDAQoOUHJvbW90ZVRvU3RhZ2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlVG9TdGFnZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlVG9TdGFnZVJlc3BvbnNlEowBChFQcm9tb3RlRG93bnN0cmVhbRI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVEb3duc3RyZWFtUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVEb3duc3RyZWFtUmVzcG9uc2USfQoMUXVlcnlGcmVpZ2h0EjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUXVlcnlGcmVpZ2h0UmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlc3BvbnNlEo8BChJVcGRhdGVGcmVpZ2h0QWxpYXMSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVGcmVpZ2h0QWxpYXNSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlRnJlaWdodEFsaWFzUmVzcG9uc2UScQoIUmV2ZXJpZnkSMS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZlcmlmeVJlcXVlc3QaMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZlcmlmeVJlc3BvbnNlEowBChFBYm9ydFZlcmlmaWNhdGlvbhI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0VmVyaWZpY2F0aW9uUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0VmVyaWZpY2F0aW9uUmVzcG9uc2USgwEKDkxpc3RXYXJlaG91c2VzEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFdhcmVob3VzZXNSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFdhcmVob3VzZXNSZXNwb25zZRJ9CgxHZXRXYXJlaG91c2USNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRXYXJlaG91c2VSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0V2FyZWhvdXNlUmVzcG9uc2USiAEKD1dhdGNoV2FyZWhvdXNlcxI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoV2FyZWhvdXNlc1JlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFdhcmVob3VzZXNSZXNwb25zZTABEoYBCg9EZWxldGVXYXJlaG91c2USOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVXYXJlaG91c2VSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlV2FyZWhvdXNlUmVzcG9uc2USmAEKFUNyZWF0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKYAQoVRGVsZXRlUmVwb0NyZWRlbnRpYWxzEj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEo8BChJHZXRSZXBvQ3JlZGVudGlhbHMSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USkgEKE0xpc3RSZXBvQ3JlZGVudGlhbHMSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKYAQoVVXBkYXRlUmVwb0NyZWRlbnRpYWxzEj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEpsBChZMaXN0R2VuZXJpY0NyZWRlbnRpYWxzEj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USoQEKGENyZWF0ZUdlbmVyaWNDcmVkZW50aWFscxJBLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRKhAQoYVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzEkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBpCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEqEBChhEZWxldGVHZW5lcmljQ3JlZGVudGlhbHMSQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2UShgEKD0NyZWF0ZUNvbmZpZ01hcBI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUNvbmZpZ01hcFJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVDb25maWdNYXBSZXNwb25zZRKGAQoPRGVsZXRlQ29uZmlnTWFwEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ29uZmlnTWFwUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNvbmZpZ01hcFJlc3BvbnNlEoMBCg5MaXN0Q29uZmlnTWFwcxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDb25maWdNYXBzUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDb25maWdNYXBzUmVzcG9uc2USfQoMR2V0Q29uZmlnTWFwEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnTWFwUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ01hcFJlc3BvbnNlEoYBCg9VcGRhdGVDb25maWdNYXASOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVDb25maWdNYXBSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVzcG9uc2USmAEKFUxpc3RBbmFseXNpc1RlbXBsYXRlcxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRKSAQoTR2V0QW5hbHlzaXNUZW1wbGF0ZRI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEpsBChZEZWxldGVBbmFseXNpc1RlbXBsYXRlEj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USrQEKHExpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXMSRS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdBpGLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRKnAQoaR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGUSQy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaRC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlErABCh1EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZRJGLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBpHLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USgwEKDkdldEFuYWx5c2lzUnVuEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5SZXNwb25zZRKRAQoSR2V0QW5hbHlzaXNSdW5Mb2dzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5Mb2dzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuTG9nc1Jlc3BvbnNlMAESjAEKEUxpc3RQcm9qZWN0RXZlbnRzEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RFdmVudHNSZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RFdmVudHNSZXNwb25zZRKPAQoSTGlzdFByb21vdGlvblRhc2tzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvblRhc2tzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEqQBChlMaXN0Q2x1c3RlclByb21vdGlvblRhc2tzEkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1JlcXVlc3QaQy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVzcG9uc2USiQEKEEdldFByb21vdGlvblRhc2sSOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25UYXNrUmVxdWVzdBo6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblRhc2tSZXNwb25zZRKeAQoXR2V0Q2x1c3RlclByb21vdGlvblRhc2sSQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyUHJvbW90aW9uVGFza1JlcXVlc3QaQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyUHJvbW90aW9uVGFza1Jlc3BvbnNlEncKCkNyZWF0ZVJvbGUSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSb2xlUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJvbGVSZXNwb25zZRJ3CgpEZWxldGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSb2xlUmVzcG9uc2USbgoHR2V0Um9sZRIwLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJvbGVSZXF1ZXN0GjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Um9sZVJlc3BvbnNlEmgKBUdyYW50Ei4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR3JhbnRSZXF1ZXN0Gi8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR3JhbnRSZXNwb25zZRJ0CglMaXN0Um9sZXMSMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Um9sZXNSZXF1ZXN0GjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJvbGVzUmVzcG9uc2USawoGUmV2b2tlEi8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2b2tlUmVxdWVzdBowLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldm9rZVJlc3BvbnNlEncKClVwZGF0ZVJvbGUSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSb2xlUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJvbGVSZXNwb25zZRKDAQoOQ3JlYXRlQVBJVG9rZW4SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVBUElUb2tlblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVBUElUb2tlblJlc3BvbnNlEoMBCg5EZWxldGVBUElUb2tlbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFQSVRva2VuUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFQSVRva2VuUmVzcG9uc2USegoLR2V0QVBJVG9rZW4SNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBUElUb2tlblJlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBUElUb2tlblJlc3BvbnNlEoABCg1MaXN0QVBJVG9rZW5zEjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFQSVRva2Vuc1JlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QVBJVG9rZW5zUmVzcG9uc2VCkwIKJGNvbS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMUIMU2VydmljZVByb3RvUAFaOGdpdGh1Yi5jb20vYWt1aXR5L2thcmdvL2FwaS9zZXJ2aWNlL3YxYWxwaGExO3N2Y3YxYWxwaGExogIEQUlLU6oCIEFrdWl0eS5Jby5LYXJnby5TZXJ2aWNlLlYxYWxwaGExygIgQWt1aXR5XElvXEthcmdvXFNlcnZpY2VcVjFhbHBoYTHiAixBa3VpdHlcSW9cS2FyZ29cU2VydmljZVxWMWFscGhhMVxHUEJNZXRhZGF0YeoCJEFrdWl0eTo6SW86OkthcmdvOjpTZXJ2aWNlOjpWMWFscGhhMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_api_v1alpha1_generated, file_k8s_io_api_core_v1_generated, file_k8s_io_apimachinery_pkg_apis_meta_v1_generated, file_api_stubs_rollouts_v1alpha1_generated, file_api_rbac_v1alpha1_generated, file_google_protobuf_any]); /** * ComponentVersions contains version information for different Kargo components. @@ -981,6 +983,304 @@ export type DeleteStageResponse = Message<"akuity.io.kargo.service.v1alpha1.Dele export const DeleteStageResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_api_service_v1alpha1_service, 35); +/** + * StageSummary is a lightweight projection of a Stage resource intended for + * use by clients rendering list or graph views of many stages. It omits + * heavy fields that are only needed when a single stage is inspected in + * detail (e.g. full FreightHistory beyond the current FreightCollection, + * PromotionTemplate step configuration, and Verification configuration). + * + * @generated from message akuity.io.kargo.service.v1alpha1.StageSummary + */ +export type StageSummary = Message<"akuity.io.kargo.service.v1alpha1.StageSummary"> & { + /** + * metadata contains the Stage's identity and Kubernetes object metadata. + * + * @generated from field: optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + */ + metadata?: ObjectMeta; + + /** + * spec contains the subset of StageSpec fields needed by list/graph views. + * + * @generated from field: optional akuity.io.kargo.service.v1alpha1.StageSpecSummary spec = 2; + */ + spec?: StageSpecSummary; + + /** + * status contains the subset of StageStatus fields needed by list/graph views. + * + * @generated from field: optional akuity.io.kargo.service.v1alpha1.StageStatusSummary status = 3; + */ + status?: StageStatusSummary; +}; + +/** + * Describes the message akuity.io.kargo.service.v1alpha1.StageSummary. + * Use `create(StageSummarySchema)` to create a new message. + */ +export const StageSummarySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_api_service_v1alpha1_service, 36); + +/** + * StageSpecSummary is the subset of StageSpec fields returned by + * ListStageSummaries. See StageSummary for the motivation. + * + * @generated from message akuity.io.kargo.service.v1alpha1.StageSpecSummary + */ +export type StageSpecSummary = Message<"akuity.io.kargo.service.v1alpha1.StageSpecSummary"> & { + /** + * shard is the name of the shard that the Stage belongs to, mirroring + * StageSpec.shard. + * + * @generated from field: string shard = 1; + */ + shard: string; + + /** + * requestedFreight mirrors StageSpec.requestedFreight. This is needed in + * full to render graph edges between Stages and their upstream sources. + * + * @generated from field: repeated github.com.akuity.kargo.api.v1alpha1.FreightRequest requestedFreight = 2; + */ + requestedFreight: FreightRequest[]; + + /** + * promotionStepCount is the number of promotion steps defined in the + * Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. + * Use GetStage to retrieve the full step configuration. + * + * @generated from field: int32 promotionStepCount = 3; + */ + promotionStepCount: number; + + /** + * hasVerification indicates whether the Stage defines a Verification. + * Use GetStage to retrieve the full Verification configuration. + * + * @generated from field: bool hasVerification = 4; + */ + hasVerification: boolean; +}; + +/** + * Describes the message akuity.io.kargo.service.v1alpha1.StageSpecSummary. + * Use `create(StageSpecSummarySchema)` to create a new message. + */ +export const StageSpecSummarySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_api_service_v1alpha1_service, 37); + +/** + * StageStatusSummary is the subset of StageStatus fields returned by + * ListStageSummaries. See StageSummary for the motivation. + * + * @generated from message akuity.io.kargo.service.v1alpha1.StageStatusSummary + */ +export type StageStatusSummary = Message<"akuity.io.kargo.service.v1alpha1.StageStatusSummary"> & { + /** + * conditions mirrors StageStatus.conditions. + * + * @generated from field: repeated k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 1; + */ + conditions: Condition[]; + + /** + * lastHandledRefresh mirrors StageStatus.lastHandledRefresh. + * + * @generated from field: string lastHandledRefresh = 2; + */ + lastHandledRefresh: string; + + /** + * currentFreight is the FreightCollection currently deployed to the Stage + * (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has + * been deployed. Use GetStage to retrieve the full FreightHistory. + * + * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.FreightCollection currentFreight = 3; + */ + currentFreight?: FreightCollection; + + /** + * currentPromotion mirrors StageStatus.currentPromotion. + * + * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.PromotionReference currentPromotion = 4; + */ + currentPromotion?: PromotionReference; + + /** + * lastPromotion mirrors StageStatus.lastPromotion. + * + * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.PromotionReference lastPromotion = 5; + */ + lastPromotion?: PromotionReference; + + /** + * health mirrors StageStatus.health. + * + * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.Health health = 6; + */ + health?: Health; + + /** + * observedGeneration mirrors StageStatus.observedGeneration. + * + * @generated from field: int64 observedGeneration = 7; + */ + observedGeneration: bigint; + + /** + * autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. + * + * @generated from field: bool autoPromotionEnabled = 8; + */ + autoPromotionEnabled: boolean; +}; + +/** + * Describes the message akuity.io.kargo.service.v1alpha1.StageStatusSummary. + * Use `create(StageStatusSummarySchema)` to create a new message. + */ +export const StageStatusSummarySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_api_service_v1alpha1_service, 38); + +/** + * ListStageSummariesRequest is the request for listing stage summaries + * within a project. + * + * @generated from message akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest + */ +export type ListStageSummariesRequest = Message<"akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest"> & { + /** + * project is the name of the project whose stage summaries should be listed. + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * freightOrigins is an optional list of Warehouse names. When non-empty, + * only Stages that request Freight originating from at least one of the + * named Warehouses (directly or transitively via upstream Stages) will be + * returned. Mirrors ListStagesRequest.freightOrigins. + * + * @generated from field: repeated string freightOrigins = 2; + */ + freightOrigins: string[]; +}; + +/** + * Describes the message akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest. + * Use `create(ListStageSummariesRequestSchema)` to create a new message. + */ +export const ListStageSummariesRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_api_service_v1alpha1_service, 39); + +/** + * ListStageSummariesResponse contains a list of stage summaries within a project. + * + * @generated from message akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse + */ +export type ListStageSummariesResponse = Message<"akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse"> & { + /** + * stageSummaries is the list of StageSummary objects found in the project. + * + * @generated from field: repeated akuity.io.kargo.service.v1alpha1.StageSummary stageSummaries = 1; + */ + stageSummaries: StageSummary[]; + + /** + * resourceVersion is the Kubernetes ResourceVersion of the underlying + * StageList. Clients may pass this value to WatchStageSummaries to begin + * watching from the exact point this list was taken, receiving only + * subsequent changes without redundant initial events. + * + * @generated from field: string resourceVersion = 2; + */ + resourceVersion: string; +}; + +/** + * Describes the message akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse. + * Use `create(ListStageSummariesResponseSchema)` to create a new message. + */ +export const ListStageSummariesResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_api_service_v1alpha1_service, 40); + +/** + * WatchStageSummariesRequest is the request for watching stage summaries via streaming. + * + * @generated from message akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest + */ +export type WatchStageSummariesRequest = Message<"akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest"> & { + /** + * project is the name of the project whose stage summaries should be watched. + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * name is the name of a specific stage to watch, if empty all stages in the project are watched. + * + * @generated from field: string name = 2; + */ + name: string; + + /** + * freightOrigins is an optional list of Warehouse names. When non-empty, + * only events for Stages that request Freight originating from at least + * one of the named Warehouses (directly or transitively via upstream + * Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. + * + * @generated from field: repeated string freightOrigins = 3; + */ + freightOrigins: string[]; + + /** + * resourceVersion is an optional Kubernetes ResourceVersion. When set, + * the watch begins at the specified version, allowing clients to resume + * from a prior list or watch without missing or duplicating events. + * + * @generated from field: string resourceVersion = 4; + */ + resourceVersion: string; +}; + +/** + * Describes the message akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest. + * Use `create(WatchStageSummariesRequestSchema)` to create a new message. + */ +export const WatchStageSummariesRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_api_service_v1alpha1_service, 41); + +/** + * WatchStageSummariesResponse contains stage summary change notifications. + * + * @generated from message akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse + */ +export type WatchStageSummariesResponse = Message<"akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse"> & { + /** + * stageSummary is the StageSummary for the Stage that changed. + * + * @generated from field: optional akuity.io.kargo.service.v1alpha1.StageSummary stageSummary = 1; + */ + stageSummary?: StageSummary; + + /** + * type indicates the type of change (ADDED, MODIFIED, DELETED). + * + * @generated from field: string type = 2; + */ + type: string; +}; + +/** + * Describes the message akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse. + * Use `create(WatchStageSummariesResponseSchema)` to create a new message. + */ +export const WatchStageSummariesResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_api_service_v1alpha1_service, 42); + /** * @generated from message akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest */ @@ -996,7 +1296,7 @@ export type GetClusterConfigRequest = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(GetClusterConfigRequestSchema)` to create a new message. */ export const GetClusterConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 36); + messageDesc(file_api_service_v1alpha1_service, 43); /** * @generated from message akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse @@ -1025,7 +1325,7 @@ export type GetClusterConfigResponse = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(GetClusterConfigResponseSchema)` to create a new message. */ export const GetClusterConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 37); + messageDesc(file_api_service_v1alpha1_service, 44); /** * explicitly empty @@ -1040,7 +1340,7 @@ export type DeleteClusterConfigRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(DeleteClusterConfigRequestSchema)` to create a new message. */ export const DeleteClusterConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 38); + messageDesc(file_api_service_v1alpha1_service, 45); /** * explicitly empty @@ -1055,7 +1355,7 @@ export type DeleteClusterConfigResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(DeleteClusterConfigResponseSchema)` to create a new message. */ export const DeleteClusterConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 39); + messageDesc(file_api_service_v1alpha1_service, 46); /** * explicitly empty @@ -1070,7 +1370,7 @@ export type WatchClusterConfigRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(WatchClusterConfigRequestSchema)` to create a new message. */ export const WatchClusterConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 40); + messageDesc(file_api_service_v1alpha1_service, 47); /** * @generated from message akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse @@ -1094,7 +1394,7 @@ export type WatchClusterConfigResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(WatchClusterConfigResponseSchema)` to create a new message. */ export const WatchClusterConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 41); + messageDesc(file_api_service_v1alpha1_service, 48); /** * ListPromotionsRequest is the request for retrieving all promotions, optionally filtered by stage. @@ -1122,7 +1422,7 @@ export type ListPromotionsRequest = Message<"akuity.io.kargo.service.v1alpha1.Li * Use `create(ListPromotionsRequestSchema)` to create a new message. */ export const ListPromotionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 42); + messageDesc(file_api_service_v1alpha1_service, 49); /** * ListPromotionsResponse contains a list of promotions within a project. @@ -1143,7 +1443,7 @@ export type ListPromotionsResponse = Message<"akuity.io.kargo.service.v1alpha1.L * Use `create(ListPromotionsResponseSchema)` to create a new message. */ export const ListPromotionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 43); + messageDesc(file_api_service_v1alpha1_service, 50); /** * WatchPromotionsRequest is the request for watching promotion changes via streaming. @@ -1171,7 +1471,7 @@ export type WatchPromotionsRequest = Message<"akuity.io.kargo.service.v1alpha1.W * Use `create(WatchPromotionsRequestSchema)` to create a new message. */ export const WatchPromotionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 44); + messageDesc(file_api_service_v1alpha1_service, 51); /** * WatchPromotionsResponse contains promotion change notifications. @@ -1199,7 +1499,7 @@ export type WatchPromotionsResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(WatchPromotionsResponseSchema)` to create a new message. */ export const WatchPromotionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 45); + messageDesc(file_api_service_v1alpha1_service, 52); /** * GetPromotionRequest is the request for retrieving details of a specific promotion. @@ -1234,7 +1534,7 @@ export type GetPromotionRequest = Message<"akuity.io.kargo.service.v1alpha1.GetP * Use `create(GetPromotionRequestSchema)` to create a new message. */ export const GetPromotionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 46); + messageDesc(file_api_service_v1alpha1_service, 53); /** * GetPromotionResponse contains the requested promotion information. @@ -1269,7 +1569,7 @@ export type GetPromotionResponse = Message<"akuity.io.kargo.service.v1alpha1.Get * Use `create(GetPromotionResponseSchema)` to create a new message. */ export const GetPromotionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 47); + messageDesc(file_api_service_v1alpha1_service, 54); /** * WatchPromotionRequest is the request for watching a specific promotion via streaming. @@ -1297,7 +1597,7 @@ export type WatchPromotionRequest = Message<"akuity.io.kargo.service.v1alpha1.Wa * Use `create(WatchPromotionRequestSchema)` to create a new message. */ export const WatchPromotionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 48); + messageDesc(file_api_service_v1alpha1_service, 55); /** * WatchPromotionResponse contains specific promotion change notifications. @@ -1325,7 +1625,7 @@ export type WatchPromotionResponse = Message<"akuity.io.kargo.service.v1alpha1.W * Use `create(WatchPromotionResponseSchema)` to create a new message. */ export const WatchPromotionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 49); + messageDesc(file_api_service_v1alpha1_service, 56); /** * AbortPromotionRequest is the request for canceling a running promotion process. @@ -1353,7 +1653,7 @@ export type AbortPromotionRequest = Message<"akuity.io.kargo.service.v1alpha1.Ab * Use `create(AbortPromotionRequestSchema)` to create a new message. */ export const AbortPromotionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 50); + messageDesc(file_api_service_v1alpha1_service, 57); /** * AbortPromotionResponse is the response after aborting a promotion. @@ -1370,7 +1670,7 @@ export type AbortPromotionResponse = Message<"akuity.io.kargo.service.v1alpha1.A * Use `create(AbortPromotionResponseSchema)` to create a new message. */ export const AbortPromotionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 51); + messageDesc(file_api_service_v1alpha1_service, 58); /** * DeleteProjectRequest is the request for deleting a project and all associated resources. @@ -1391,7 +1691,7 @@ export type DeleteProjectRequest = Message<"akuity.io.kargo.service.v1alpha1.Del * Use `create(DeleteProjectRequestSchema)` to create a new message. */ export const DeleteProjectRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 52); + messageDesc(file_api_service_v1alpha1_service, 59); /** * DeleteProjectResponse is the response after deleting a project. @@ -1408,7 +1708,7 @@ export type DeleteProjectResponse = Message<"akuity.io.kargo.service.v1alpha1.De * Use `create(DeleteProjectResponseSchema)` to create a new message. */ export const DeleteProjectResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 53); + messageDesc(file_api_service_v1alpha1_service, 60); /** * GetProjectRequest is the request for retrieving details of a specific project. @@ -1436,7 +1736,7 @@ export type GetProjectRequest = Message<"akuity.io.kargo.service.v1alpha1.GetPro * Use `create(GetProjectRequestSchema)` to create a new message. */ export const GetProjectRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 54); + messageDesc(file_api_service_v1alpha1_service, 61); /** * GetProjectResponse contains the requested project information. @@ -1471,7 +1771,7 @@ export type GetProjectResponse = Message<"akuity.io.kargo.service.v1alpha1.GetPr * Use `create(GetProjectResponseSchema)` to create a new message. */ export const GetProjectResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 55); + messageDesc(file_api_service_v1alpha1_service, 62); /** * ListProjectsRequest is the request for listing all projects with optional filtering and pagination. @@ -1521,7 +1821,7 @@ export type ListProjectsRequest = Message<"akuity.io.kargo.service.v1alpha1.List * Use `create(ListProjectsRequestSchema)` to create a new message. */ export const ListProjectsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 56); + messageDesc(file_api_service_v1alpha1_service, 63); /** * ListProjectsResponse contains the list of projects and pagination information. @@ -1549,7 +1849,7 @@ export type ListProjectsResponse = Message<"akuity.io.kargo.service.v1alpha1.Lis * Use `create(ListProjectsResponseSchema)` to create a new message. */ export const ListProjectsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 57); + messageDesc(file_api_service_v1alpha1_service, 64); /** * GetProjectConfigRequest is the request for retrieving project-level configuration settings. @@ -1577,7 +1877,7 @@ export type GetProjectConfigRequest = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(GetProjectConfigRequestSchema)` to create a new message. */ export const GetProjectConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 58); + messageDesc(file_api_service_v1alpha1_service, 65); /** * GetProjectConfigResponse contains the requested project configuration. @@ -1612,7 +1912,7 @@ export type GetProjectConfigResponse = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(GetProjectConfigResponseSchema)` to create a new message. */ export const GetProjectConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 59); + messageDesc(file_api_service_v1alpha1_service, 66); /** * DeleteProjectConfigRequest is the request for removing project-level configuration. @@ -1633,7 +1933,7 @@ export type DeleteProjectConfigRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(DeleteProjectConfigRequestSchema)` to create a new message. */ export const DeleteProjectConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 60); + messageDesc(file_api_service_v1alpha1_service, 67); /** * DeleteProjectConfigResponse is the response after deleting project configuration. @@ -1650,7 +1950,7 @@ export type DeleteProjectConfigResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(DeleteProjectConfigResponseSchema)` to create a new message. */ export const DeleteProjectConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 61); + messageDesc(file_api_service_v1alpha1_service, 68); /** * WatchProjectConfigRequest is the request for streaming project configuration changes. @@ -1671,7 +1971,7 @@ export type WatchProjectConfigRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(WatchProjectConfigRequestSchema)` to create a new message. */ export const WatchProjectConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 62); + messageDesc(file_api_service_v1alpha1_service, 69); /** * WatchProjectConfigResponse provides streaming updates for project configuration changes. @@ -1699,7 +1999,7 @@ export type WatchProjectConfigResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(WatchProjectConfigResponseSchema)` to create a new message. */ export const WatchProjectConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 63); + messageDesc(file_api_service_v1alpha1_service, 70); /** * ApproveFreightRequest is the request for approving freight for promotion to a stage. @@ -1741,7 +2041,7 @@ export type ApproveFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Ap * Use `create(ApproveFreightRequestSchema)` to create a new message. */ export const ApproveFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 64); + messageDesc(file_api_service_v1alpha1_service, 71); /** * ApproveFreightResponse is the response after approving freight. @@ -1758,7 +2058,7 @@ export type ApproveFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.A * Use `create(ApproveFreightResponseSchema)` to create a new message. */ export const ApproveFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 65); + messageDesc(file_api_service_v1alpha1_service, 72); /** * DeleteFreightRequest is the request for deleting freight. @@ -1793,7 +2093,7 @@ export type DeleteFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Del * Use `create(DeleteFreightRequestSchema)` to create a new message. */ export const DeleteFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 66); + messageDesc(file_api_service_v1alpha1_service, 73); /** * DeleteFreightResponse is the response after deleting freight. @@ -1810,7 +2110,7 @@ export type DeleteFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.De * Use `create(DeleteFreightResponseSchema)` to create a new message. */ export const DeleteFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 67); + messageDesc(file_api_service_v1alpha1_service, 74); /** * GetFreightRequest is the request for retrieving details of specific freight. @@ -1852,7 +2152,7 @@ export type GetFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.GetFre * Use `create(GetFreightRequestSchema)` to create a new message. */ export const GetFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 68); + messageDesc(file_api_service_v1alpha1_service, 75); /** * GetFreightResponse contains the requested freight information. @@ -1887,7 +2187,7 @@ export type GetFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.GetFr * Use `create(GetFreightResponseSchema)` to create a new message. */ export const GetFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 69); + messageDesc(file_api_service_v1alpha1_service, 76); /** * WatchFreightRequest is the request for watching freight changes via streaming. @@ -1908,7 +2208,7 @@ export type WatchFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Watc * Use `create(WatchFreightRequestSchema)` to create a new message. */ export const WatchFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 70); + messageDesc(file_api_service_v1alpha1_service, 77); /** * WatchFreightResponse contains freight change notifications. @@ -1938,7 +2238,7 @@ export type WatchFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.Wat * Use `create(WatchFreightResponseSchema)` to create a new message. */ export const WatchFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 71); + messageDesc(file_api_service_v1alpha1_service, 78); /** * PromoteToStageRequest is the request for promoting freight to a specific stage. @@ -1980,7 +2280,7 @@ export type PromoteToStageRequest = Message<"akuity.io.kargo.service.v1alpha1.Pr * Use `create(PromoteToStageRequestSchema)` to create a new message. */ export const PromoteToStageRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 72); + messageDesc(file_api_service_v1alpha1_service, 79); /** * PromoteToStageResponse contains the promotion created for the freight promotion. @@ -2001,7 +2301,7 @@ export type PromoteToStageResponse = Message<"akuity.io.kargo.service.v1alpha1.P * Use `create(PromoteToStageResponseSchema)` to create a new message. */ export const PromoteToStageResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 73); + messageDesc(file_api_service_v1alpha1_service, 80); /** * PromoteDownstreamRequest is the request for automatically promoting freight to downstream stages. @@ -2043,7 +2343,7 @@ export type PromoteDownstreamRequest = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(PromoteDownstreamRequestSchema)` to create a new message. */ export const PromoteDownstreamRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 74); + messageDesc(file_api_service_v1alpha1_service, 81); /** * PromoteDownstreamResponse contains the promotions created for downstream freight promotions. @@ -2064,7 +2364,7 @@ export type PromoteDownstreamResponse = Message<"akuity.io.kargo.service.v1alpha * Use `create(PromoteDownstreamResponseSchema)` to create a new message. */ export const PromoteDownstreamResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 75); + messageDesc(file_api_service_v1alpha1_service, 82); /** * QueryFreightRequest is the request for searching freight based on specified criteria. @@ -2127,7 +2427,7 @@ export type QueryFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Quer * Use `create(QueryFreightRequestSchema)` to create a new message. */ export const QueryFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 76); + messageDesc(file_api_service_v1alpha1_service, 83); /** * QueryFreightResponse contains the grouped freight search results. @@ -2148,7 +2448,7 @@ export type QueryFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.Que * Use `create(QueryFreightResponseSchema)` to create a new message. */ export const QueryFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 77); + messageDesc(file_api_service_v1alpha1_service, 84); /** * FreightList contains a list of freight resources. @@ -2169,7 +2469,7 @@ export type FreightList = Message<"akuity.io.kargo.service.v1alpha1.FreightList" * Use `create(FreightListSchema)` to create a new message. */ export const FreightListSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 78); + messageDesc(file_api_service_v1alpha1_service, 85); /** * UpdateFreightAliasRequest is the request for updating a freight's alias. @@ -2211,7 +2511,7 @@ export type UpdateFreightAliasRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(UpdateFreightAliasRequestSchema)` to create a new message. */ export const UpdateFreightAliasRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 79); + messageDesc(file_api_service_v1alpha1_service, 86); /** * UpdateFreightAliasResponse is the response after updating a freight's alias. @@ -2228,7 +2528,7 @@ export type UpdateFreightAliasResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(UpdateFreightAliasResponseSchema)` to create a new message. */ export const UpdateFreightAliasResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 80); + messageDesc(file_api_service_v1alpha1_service, 87); /** * ReverifyRequest is the request for triggering re-execution of verification processes for a stage. @@ -2256,7 +2556,7 @@ export type ReverifyRequest = Message<"akuity.io.kargo.service.v1alpha1.Reverify * Use `create(ReverifyRequestSchema)` to create a new message. */ export const ReverifyRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 81); + messageDesc(file_api_service_v1alpha1_service, 88); /** * ReverifyResponse is the response after triggering reverification. @@ -2273,7 +2573,7 @@ export type ReverifyResponse = Message<"akuity.io.kargo.service.v1alpha1.Reverif * Use `create(ReverifyResponseSchema)` to create a new message. */ export const ReverifyResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 82); + messageDesc(file_api_service_v1alpha1_service, 89); /** * AbortVerificationRequest is the request for canceling running verification processes for a stage. @@ -2301,7 +2601,7 @@ export type AbortVerificationRequest = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(AbortVerificationRequestSchema)` to create a new message. */ export const AbortVerificationRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 83); + messageDesc(file_api_service_v1alpha1_service, 90); /** * AbortVerificationResponse is the response after aborting verification. @@ -2318,7 +2618,7 @@ export type AbortVerificationResponse = Message<"akuity.io.kargo.service.v1alpha * Use `create(AbortVerificationResponseSchema)` to create a new message. */ export const AbortVerificationResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 84); + messageDesc(file_api_service_v1alpha1_service, 91); /** * ListWarehousesRequest is the request for listing warehouses within a project. @@ -2339,7 +2639,7 @@ export type ListWarehousesRequest = Message<"akuity.io.kargo.service.v1alpha1.Li * Use `create(ListWarehousesRequestSchema)` to create a new message. */ export const ListWarehousesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 85); + messageDesc(file_api_service_v1alpha1_service, 92); /** * ListWarehousesResponse contains a list of warehouses within a project. @@ -2360,7 +2660,7 @@ export type ListWarehousesResponse = Message<"akuity.io.kargo.service.v1alpha1.L * Use `create(ListWarehousesResponseSchema)` to create a new message. */ export const ListWarehousesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 86); + messageDesc(file_api_service_v1alpha1_service, 93); /** * GetWarehouseRequest is the request for retrieving details of a specific warehouse. @@ -2395,7 +2695,7 @@ export type GetWarehouseRequest = Message<"akuity.io.kargo.service.v1alpha1.GetW * Use `create(GetWarehouseRequestSchema)` to create a new message. */ export const GetWarehouseRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 87); + messageDesc(file_api_service_v1alpha1_service, 94); /** * GetWarehouseResponse contains the requested warehouse information. @@ -2430,7 +2730,7 @@ export type GetWarehouseResponse = Message<"akuity.io.kargo.service.v1alpha1.Get * Use `create(GetWarehouseResponseSchema)` to create a new message. */ export const GetWarehouseResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 88); + messageDesc(file_api_service_v1alpha1_service, 95); /** * WatchWarehousesRequest is the request for watching warehouse changes via streaming. @@ -2458,7 +2758,7 @@ export type WatchWarehousesRequest = Message<"akuity.io.kargo.service.v1alpha1.W * Use `create(WatchWarehousesRequestSchema)` to create a new message. */ export const WatchWarehousesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 89); + messageDesc(file_api_service_v1alpha1_service, 96); /** * WatchWarehousesResponse contains warehouse change notifications. @@ -2486,7 +2786,7 @@ export type WatchWarehousesResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(WatchWarehousesResponseSchema)` to create a new message. */ export const WatchWarehousesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 90); + messageDesc(file_api_service_v1alpha1_service, 97); /** * DeleteWarehouseRequest is the request for deleting a warehouse. @@ -2514,7 +2814,7 @@ export type DeleteWarehouseRequest = Message<"akuity.io.kargo.service.v1alpha1.D * Use `create(DeleteWarehouseRequestSchema)` to create a new message. */ export const DeleteWarehouseRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 91); + messageDesc(file_api_service_v1alpha1_service, 98); /** * DeleteWarehouseResponse is the response after deleting a warehouse. @@ -2531,7 +2831,7 @@ export type DeleteWarehouseResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(DeleteWarehouseResponseSchema)` to create a new message. */ export const DeleteWarehouseResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 92); + messageDesc(file_api_service_v1alpha1_service, 99); /** * CreateConfigMapRequest is the request for creating a project-level, @@ -2592,7 +2892,7 @@ export type CreateConfigMapRequest = Message<"akuity.io.kargo.service.v1alpha1.C * Use `create(CreateConfigMapRequestSchema)` to create a new message. */ export const CreateConfigMapRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 93); + messageDesc(file_api_service_v1alpha1_service, 100); /** * CreateConfigMapResponse is the response containing the ConfigMap that was @@ -2614,7 +2914,7 @@ export type CreateConfigMapResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(CreateConfigMapResponseSchema)` to create a new message. */ export const CreateConfigMapResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 94); + messageDesc(file_api_service_v1alpha1_service, 101); /** * DeleteConfigMapRequest is the request for deleting a project-level, @@ -2653,7 +2953,7 @@ export type DeleteConfigMapRequest = Message<"akuity.io.kargo.service.v1alpha1.D * Use `create(DeleteConfigMapRequestSchema)` to create a new message. */ export const DeleteConfigMapRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 95); + messageDesc(file_api_service_v1alpha1_service, 102); /** * DeleteConfigMapResponse is the response returned after deleting a ConfigMap. @@ -2670,7 +2970,7 @@ export type DeleteConfigMapResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(DeleteConfigMapResponseSchema)` to create a new message. */ export const DeleteConfigMapResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 96); + messageDesc(file_api_service_v1alpha1_service, 103); /** * ListConfigMapsRequest is the request for listing all project-level, @@ -2702,7 +3002,7 @@ export type ListConfigMapsRequest = Message<"akuity.io.kargo.service.v1alpha1.Li * Use `create(ListConfigMapsRequestSchema)` to create a new message. */ export const ListConfigMapsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 97); + messageDesc(file_api_service_v1alpha1_service, 104); /** * ListConfigMapsResponse contains the list of ConfigMaps. @@ -2723,7 +3023,7 @@ export type ListConfigMapsResponse = Message<"akuity.io.kargo.service.v1alpha1.L * Use `create(ListConfigMapsResponseSchema)` to create a new message. */ export const ListConfigMapsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 98); + messageDesc(file_api_service_v1alpha1_service, 105); /** * GetConfigMapRequest is the request for getting a specific project-level, @@ -2770,7 +3070,7 @@ export type GetConfigMapRequest = Message<"akuity.io.kargo.service.v1alpha1.GetC * Use `create(GetConfigMapRequestSchema)` to create a new message. */ export const GetConfigMapRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 99); + messageDesc(file_api_service_v1alpha1_service, 106); /** * GetConfigMapResponse contains the requested ConfigMap. @@ -2805,7 +3105,7 @@ export type GetConfigMapResponse = Message<"akuity.io.kargo.service.v1alpha1.Get * Use `create(GetConfigMapResponseSchema)` to create a new message. */ export const GetConfigMapResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 100); + messageDesc(file_api_service_v1alpha1_service, 107); /** * UpdateConfigMapRequest is the request for updating a project-level, @@ -2866,7 +3166,7 @@ export type UpdateConfigMapRequest = Message<"akuity.io.kargo.service.v1alpha1.U * Use `create(UpdateConfigMapRequestSchema)` to create a new message. */ export const UpdateConfigMapRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 101); + messageDesc(file_api_service_v1alpha1_service, 108); /** * UpdateConfigMapResponse is the response containing the updated ConfigMap. @@ -2887,7 +3187,7 @@ export type UpdateConfigMapResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(UpdateConfigMapResponseSchema)` to create a new message. */ export const UpdateConfigMapResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 102); + messageDesc(file_api_service_v1alpha1_service, 109); /** * CreateRepoCredentialsRequest is the request for creating new credentials for accessing external repositories. @@ -2957,7 +3257,7 @@ export type CreateRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1al * Use `create(CreateRepoCredentialsRequestSchema)` to create a new message. */ export const CreateRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 103); + messageDesc(file_api_service_v1alpha1_service, 110); /** * CreateRepoCredentialsResponse contains the newly created repository credentials. @@ -2978,7 +3278,7 @@ export type CreateRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1a * Use `create(CreateRepoCredentialsResponseSchema)` to create a new message. */ export const CreateRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 104); + messageDesc(file_api_service_v1alpha1_service, 111); /** * DeleteRepoCredentialsRequest is the request for deleting existing repository credentials. @@ -3007,7 +3307,7 @@ export type DeleteRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1al * Use `create(DeleteRepoCredentialsRequestSchema)` to create a new message. */ export const DeleteRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 105); + messageDesc(file_api_service_v1alpha1_service, 112); /** * DeleteRepoCredentialsResponse is the response returned after deleting repository credentials. @@ -3024,7 +3324,7 @@ export type DeleteRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1a * Use `create(DeleteRepoCredentialsResponseSchema)` to create a new message. */ export const DeleteRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 106); + messageDesc(file_api_service_v1alpha1_service, 113); /** * GetRepoCredentialsRequest is the request for retrieving existing repository credentials. @@ -3059,7 +3359,7 @@ export type GetRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(GetRepoCredentialsRequestSchema)` to create a new message. */ export const GetRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 107); + messageDesc(file_api_service_v1alpha1_service, 114); /** * GetRepoCredentialsResponse contains the requested repository credentials information. @@ -3094,7 +3394,7 @@ export type GetRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(GetRepoCredentialsResponseSchema)` to create a new message. */ export const GetRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 108); + messageDesc(file_api_service_v1alpha1_service, 115); /** * ListRepoCredentialsRequest is the request for listing all repository credentials in a project. @@ -3115,7 +3415,7 @@ export type ListRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(ListRepoCredentialsRequestSchema)` to create a new message. */ export const ListRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 109); + messageDesc(file_api_service_v1alpha1_service, 116); /** * ListRepoCredentialsResponse contains a list of repository credentials for the specified project. @@ -3136,7 +3436,7 @@ export type ListRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(ListRepoCredentialsResponseSchema)` to create a new message. */ export const ListRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 110); + messageDesc(file_api_service_v1alpha1_service, 117); /** * UpdateRepoCredentialsRequest is the request for updating existing repository credentials. @@ -3206,7 +3506,7 @@ export type UpdateRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1al * Use `create(UpdateRepoCredentialsRequestSchema)` to create a new message. */ export const UpdateRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 111); + messageDesc(file_api_service_v1alpha1_service, 118); /** * UpdateRepoCredentialsResponse contains the updated repository credentials information. @@ -3227,7 +3527,7 @@ export type UpdateRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1a * Use `create(UpdateRepoCredentialsResponseSchema)` to create a new message. */ export const UpdateRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 112); + messageDesc(file_api_service_v1alpha1_service, 119); /** * ListGenericCredentialsRequest is the request for listing all generic @@ -3259,7 +3559,7 @@ export type ListGenericCredentialsRequest = Message<"akuity.io.kargo.service.v1a * Use `create(ListGenericCredentialsRequestSchema)` to create a new message. */ export const ListGenericCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 113); + messageDesc(file_api_service_v1alpha1_service, 120); /** * ListGenericCredentialsResponse contains a list of generic credentials for the specified project. @@ -3280,7 +3580,7 @@ export type ListGenericCredentialsResponse = Message<"akuity.io.kargo.service.v1 * Use `create(ListGenericCredentialsResponseSchema)` to create a new message. */ export const ListGenericCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 114); + messageDesc(file_api_service_v1alpha1_service, 121); /** * CreateGenericCredentialsRequest is the request for creating new generic @@ -3341,7 +3641,7 @@ export type CreateGenericCredentialsRequest = Message<"akuity.io.kargo.service.v * Use `create(CreateGenericCredentialsRequestSchema)` to create a new message. */ export const CreateGenericCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 115); + messageDesc(file_api_service_v1alpha1_service, 122); /** * CreateGenericCredentialsResponse contains the newly created generic credentials. @@ -3362,7 +3662,7 @@ export type CreateGenericCredentialsResponse = Message<"akuity.io.kargo.service. * Use `create(CreateGenericCredentialsResponseSchema)` to create a new message. */ export const CreateGenericCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 116); + messageDesc(file_api_service_v1alpha1_service, 123); /** * UpdateGenericCredentialsRequest is the request for updating existing generic credentials. @@ -3422,7 +3722,7 @@ export type UpdateGenericCredentialsRequest = Message<"akuity.io.kargo.service.v * Use `create(UpdateGenericCredentialsRequestSchema)` to create a new message. */ export const UpdateGenericCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 117); + messageDesc(file_api_service_v1alpha1_service, 124); /** * UpdateGenericCredentialsResponse contains the updated generic credentials information. @@ -3443,7 +3743,7 @@ export type UpdateGenericCredentialsResponse = Message<"akuity.io.kargo.service. * Use `create(UpdateGenericCredentialsResponseSchema)` to create a new message. */ export const UpdateGenericCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 118); + messageDesc(file_api_service_v1alpha1_service, 125); /** * DeleteGenericCredentialsRequest is the request for deleting generic @@ -3482,7 +3782,7 @@ export type DeleteGenericCredentialsRequest = Message<"akuity.io.kargo.service.v * Use `create(DeleteGenericCredentialsRequestSchema)` to create a new message. */ export const DeleteGenericCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 119); + messageDesc(file_api_service_v1alpha1_service, 126); /** * DeleteGenericCredentialsResponse is the response returned after deleting generic credentials. @@ -3499,7 +3799,7 @@ export type DeleteGenericCredentialsResponse = Message<"akuity.io.kargo.service. * Use `create(DeleteGenericCredentialsResponseSchema)` to create a new message. */ export const DeleteGenericCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 120); + messageDesc(file_api_service_v1alpha1_service, 127); /** * ListAnalysisTemplatesRequest is the request for listing all analysis templates in a project. @@ -3520,7 +3820,7 @@ export type ListAnalysisTemplatesRequest = Message<"akuity.io.kargo.service.v1al * Use `create(ListAnalysisTemplatesRequestSchema)` to create a new message. */ export const ListAnalysisTemplatesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 121); + messageDesc(file_api_service_v1alpha1_service, 128); /** * ListAnalysisTemplatesResponse contains a list of analysis templates for the specified project. @@ -3541,7 +3841,7 @@ export type ListAnalysisTemplatesResponse = Message<"akuity.io.kargo.service.v1a * Use `create(ListAnalysisTemplatesResponseSchema)` to create a new message. */ export const ListAnalysisTemplatesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 122); + messageDesc(file_api_service_v1alpha1_service, 129); /** * GetAnalysisTemplateRequest is the request for retrieving a specific analysis template. @@ -3576,7 +3876,7 @@ export type GetAnalysisTemplateRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(GetAnalysisTemplateRequestSchema)` to create a new message. */ export const GetAnalysisTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 123); + messageDesc(file_api_service_v1alpha1_service, 130); /** * GetAnalysisTemplateResponse contains the requested analysis template information. @@ -3611,7 +3911,7 @@ export type GetAnalysisTemplateResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(GetAnalysisTemplateResponseSchema)` to create a new message. */ export const GetAnalysisTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 124); + messageDesc(file_api_service_v1alpha1_service, 131); /** * DeleteAnalysisTemplateRequest is the request for deleting an analysis template. @@ -3639,7 +3939,7 @@ export type DeleteAnalysisTemplateRequest = Message<"akuity.io.kargo.service.v1a * Use `create(DeleteAnalysisTemplateRequestSchema)` to create a new message. */ export const DeleteAnalysisTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 125); + messageDesc(file_api_service_v1alpha1_service, 132); /** * DeleteAnalysisTemplateResponse is the response returned after deleting an analysis template. @@ -3656,7 +3956,7 @@ export type DeleteAnalysisTemplateResponse = Message<"akuity.io.kargo.service.v1 * Use `create(DeleteAnalysisTemplateResponseSchema)` to create a new message. */ export const DeleteAnalysisTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 126); + messageDesc(file_api_service_v1alpha1_service, 133); /** * ListClusterAnalysisTemplatesRequest is the request for listing all cluster-level analysis templates. @@ -3671,7 +3971,7 @@ export type ListClusterAnalysisTemplatesRequest = Message<"akuity.io.kargo.servi * Use `create(ListClusterAnalysisTemplatesRequestSchema)` to create a new message. */ export const ListClusterAnalysisTemplatesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 127); + messageDesc(file_api_service_v1alpha1_service, 134); /** * ListClusterAnalysisTemplatesResponse contains a list of cluster-level analysis templates. @@ -3692,7 +3992,7 @@ export type ListClusterAnalysisTemplatesResponse = Message<"akuity.io.kargo.serv * Use `create(ListClusterAnalysisTemplatesResponseSchema)` to create a new message. */ export const ListClusterAnalysisTemplatesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 128); + messageDesc(file_api_service_v1alpha1_service, 135); /** * GetClusterAnalysisTemplateRequest is the request for retrieving a specific cluster analysis template. @@ -3720,7 +4020,7 @@ export type GetClusterAnalysisTemplateRequest = Message<"akuity.io.kargo.service * Use `create(GetClusterAnalysisTemplateRequestSchema)` to create a new message. */ export const GetClusterAnalysisTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 129); + messageDesc(file_api_service_v1alpha1_service, 136); /** * GetClusterAnalysisTemplateResponse contains the requested cluster analysis template information. @@ -3755,7 +4055,7 @@ export type GetClusterAnalysisTemplateResponse = Message<"akuity.io.kargo.servic * Use `create(GetClusterAnalysisTemplateResponseSchema)` to create a new message. */ export const GetClusterAnalysisTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 130); + messageDesc(file_api_service_v1alpha1_service, 137); /** * DeleteClusterAnalysisTemplateRequest is the request for deleting a cluster analysis template. @@ -3776,7 +4076,7 @@ export type DeleteClusterAnalysisTemplateRequest = Message<"akuity.io.kargo.serv * Use `create(DeleteClusterAnalysisTemplateRequestSchema)` to create a new message. */ export const DeleteClusterAnalysisTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 131); + messageDesc(file_api_service_v1alpha1_service, 138); /** * DeleteClusterAnalysisTemplateResponse is the response returned after deleting a cluster analysis template. @@ -3793,7 +4093,7 @@ export type DeleteClusterAnalysisTemplateResponse = Message<"akuity.io.kargo.ser * Use `create(DeleteClusterAnalysisTemplateResponseSchema)` to create a new message. */ export const DeleteClusterAnalysisTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 132); + messageDesc(file_api_service_v1alpha1_service, 139); /** * GetAnalysisRunRequest is the request for retrieving a specific analysis run. @@ -3828,7 +4128,7 @@ export type GetAnalysisRunRequest = Message<"akuity.io.kargo.service.v1alpha1.Ge * Use `create(GetAnalysisRunRequestSchema)` to create a new message. */ export const GetAnalysisRunRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 133); + messageDesc(file_api_service_v1alpha1_service, 140); /** * GetAnalysisRunResponse contains the requested analysis run information. @@ -3863,7 +4163,7 @@ export type GetAnalysisRunResponse = Message<"akuity.io.kargo.service.v1alpha1.G * Use `create(GetAnalysisRunResponseSchema)` to create a new message. */ export const GetAnalysisRunResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 134); + messageDesc(file_api_service_v1alpha1_service, 141); /** * GetAnalysisRunLogsRequest is the request for retrieving logs from an analysis run. @@ -3905,7 +4205,7 @@ export type GetAnalysisRunLogsRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(GetAnalysisRunLogsRequestSchema)` to create a new message. */ export const GetAnalysisRunLogsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 135); + messageDesc(file_api_service_v1alpha1_service, 142); /** * GetAnalysisRunLogsResponse contains a chunk of logs from the analysis run. @@ -3926,7 +4226,7 @@ export type GetAnalysisRunLogsResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(GetAnalysisRunLogsResponseSchema)` to create a new message. */ export const GetAnalysisRunLogsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 136); + messageDesc(file_api_service_v1alpha1_service, 143); /** * ListProjectEventsRequest is the request for listing events in a project. @@ -3947,7 +4247,7 @@ export type ListProjectEventsRequest = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(ListProjectEventsRequestSchema)` to create a new message. */ export const ListProjectEventsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 137); + messageDesc(file_api_service_v1alpha1_service, 144); /** * ListProjectEventsResponse contains a list of events for the specified project. @@ -3968,7 +4268,7 @@ export type ListProjectEventsResponse = Message<"akuity.io.kargo.service.v1alpha * Use `create(ListProjectEventsResponseSchema)` to create a new message. */ export const ListProjectEventsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 138); + messageDesc(file_api_service_v1alpha1_service, 145); /** * ListPromotionTasksRequest is the request for listing promotion tasks in a project. @@ -3989,7 +4289,7 @@ export type ListPromotionTasksRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(ListPromotionTasksRequestSchema)` to create a new message. */ export const ListPromotionTasksRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 139); + messageDesc(file_api_service_v1alpha1_service, 146); /** * ListPromotionTasksResponse contains a list of promotion tasks for the specified project. @@ -4010,7 +4310,7 @@ export type ListPromotionTasksResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(ListPromotionTasksResponseSchema)` to create a new message. */ export const ListPromotionTasksResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 140); + messageDesc(file_api_service_v1alpha1_service, 147); /** * GetPromotionTaskRequest is the request for retrieving a specific promotion task. @@ -4045,7 +4345,7 @@ export type GetPromotionTaskRequest = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(GetPromotionTaskRequestSchema)` to create a new message. */ export const GetPromotionTaskRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 141); + messageDesc(file_api_service_v1alpha1_service, 148); /** * GetPromotionTaskResponse contains the requested promotion task information. @@ -4080,7 +4380,7 @@ export type GetPromotionTaskResponse = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(GetPromotionTaskResponseSchema)` to create a new message. */ export const GetPromotionTaskResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 142); + messageDesc(file_api_service_v1alpha1_service, 149); /** * ListClusterPromotionTasksRequest is the request for listing all cluster-level promotion tasks. @@ -4095,7 +4395,7 @@ export type ListClusterPromotionTasksRequest = Message<"akuity.io.kargo.service. * Use `create(ListClusterPromotionTasksRequestSchema)` to create a new message. */ export const ListClusterPromotionTasksRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 143); + messageDesc(file_api_service_v1alpha1_service, 150); /** * ListClusterPromotionTasksResponse contains a list of cluster-level promotion tasks. @@ -4116,7 +4416,7 @@ export type ListClusterPromotionTasksResponse = Message<"akuity.io.kargo.service * Use `create(ListClusterPromotionTasksResponseSchema)` to create a new message. */ export const ListClusterPromotionTasksResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 144); + messageDesc(file_api_service_v1alpha1_service, 151); /** * GetClusterPromotionTaskRequest is the request for retrieving a specific cluster promotion task. @@ -4144,7 +4444,7 @@ export type GetClusterPromotionTaskRequest = Message<"akuity.io.kargo.service.v1 * Use `create(GetClusterPromotionTaskRequestSchema)` to create a new message. */ export const GetClusterPromotionTaskRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 145); + messageDesc(file_api_service_v1alpha1_service, 152); /** * GetClusterPromotionTaskResponse contains the requested cluster promotion task information. @@ -4179,7 +4479,7 @@ export type GetClusterPromotionTaskResponse = Message<"akuity.io.kargo.service.v * Use `create(GetClusterPromotionTaskResponseSchema)` to create a new message. */ export const GetClusterPromotionTaskResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 146); + messageDesc(file_api_service_v1alpha1_service, 153); /** * CreateRoleRequest is a request to create a new Kargo Role virtual resource by @@ -4201,7 +4501,7 @@ export type CreateRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.Create * Use `create(CreateRoleRequestSchema)` to create a new message. */ export const CreateRoleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 147); + messageDesc(file_api_service_v1alpha1_service, 154); /** * CreateRoleResponse contains the details of a newly created Kargo Role virtual @@ -4223,7 +4523,7 @@ export type CreateRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.Creat * Use `create(CreateRoleResponseSchema)` to create a new message. */ export const CreateRoleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 148); + messageDesc(file_api_service_v1alpha1_service, 155); /** * DeleteRoleRequest is a request to delete a Kargo Role virtual resource by @@ -4252,7 +4552,7 @@ export type DeleteRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.Delete * Use `create(DeleteRoleRequestSchema)` to create a new message. */ export const DeleteRoleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 149); + messageDesc(file_api_service_v1alpha1_service, 156); /** * DeleteRoleResponse is the response returned after deleting a Kargo Role @@ -4270,7 +4570,7 @@ export type DeleteRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.Delet * Use `create(DeleteRoleResponseSchema)` to create a new message. */ export const DeleteRoleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 150); + messageDesc(file_api_service_v1alpha1_service, 157); /** * GetRoleRequest is a request to retrieve the details of a Kargo Role virtual @@ -4324,7 +4624,7 @@ export type GetRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.GetRoleRe * Use `create(GetRoleRequestSchema)` to create a new message. */ export const GetRoleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 151); + messageDesc(file_api_service_v1alpha1_service, 158); /** * GetRoleResponse contains the details of a Kargo Role virtual resource or its @@ -4369,7 +4669,7 @@ export type GetRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.GetRoleR * Use `create(GetRoleResponseSchema)` to create a new message. */ export const GetRoleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 152); + messageDesc(file_api_service_v1alpha1_service, 159); /** * Claims represents a collection of OIDC claims. @@ -4391,7 +4691,7 @@ export type Claims = Message<"akuity.io.kargo.service.v1alpha1.Claims"> & { * Use `create(ClaimsSchema)` to create a new message. */ export const ClaimsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 153); + messageDesc(file_api_service_v1alpha1_service, 160); /** * GrantRequest is a request to assign permissions to a Kargo Role virtual @@ -4444,7 +4744,7 @@ export type GrantRequest = Message<"akuity.io.kargo.service.v1alpha1.GrantReques * Use `create(GrantRequestSchema)` to create a new message. */ export const GrantRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 154); + messageDesc(file_api_service_v1alpha1_service, 161); /** * GrantResponse contains the details of a Kargo Role virtual resource after a @@ -4466,7 +4766,7 @@ export type GrantResponse = Message<"akuity.io.kargo.service.v1alpha1.GrantRespo * Use `create(GrantResponseSchema)` to create a new message. */ export const GrantResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 155); + messageDesc(file_api_service_v1alpha1_service, 162); /** * ListRolesRequests is a request to retrieve the details of all Kargo Role @@ -4504,7 +4804,7 @@ export type ListRolesRequest = Message<"akuity.io.kargo.service.v1alpha1.ListRol * Use `create(ListRolesRequestSchema)` to create a new message. */ export const ListRolesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 156); + messageDesc(file_api_service_v1alpha1_service, 163); /** * ListRolesResponse contains a list of Kargo Role virtual resources or their @@ -4535,7 +4835,7 @@ export type ListRolesResponse = Message<"akuity.io.kargo.service.v1alpha1.ListRo * Use `create(ListRolesResponseSchema)` to create a new message. */ export const ListRolesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 157); + messageDesc(file_api_service_v1alpha1_service, 164); /** * RevokeRequest is a request to remove permissions from a Kargo Role virtual @@ -4589,7 +4889,7 @@ export type RevokeRequest = Message<"akuity.io.kargo.service.v1alpha1.RevokeRequ * Use `create(RevokeRequestSchema)` to create a new message. */ export const RevokeRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 158); + messageDesc(file_api_service_v1alpha1_service, 165); /** * RevokeResponse contains the details of a Kargo Role virtual resource after a @@ -4612,7 +4912,7 @@ export type RevokeResponse = Message<"akuity.io.kargo.service.v1alpha1.RevokeRes * Use `create(RevokeResponseSchema)` to create a new message. */ export const RevokeResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 159); + messageDesc(file_api_service_v1alpha1_service, 166); /** * UpdateRoleRequest is a request to modify an existing Kargo Role virtual @@ -4634,7 +4934,7 @@ export type UpdateRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.Update * Use `create(UpdateRoleRequestSchema)` to create a new message. */ export const UpdateRoleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 160); + messageDesc(file_api_service_v1alpha1_service, 167); /** * UpdateRoleResponse contains the details of the updated Kargo Role virtual @@ -4656,7 +4956,7 @@ export type UpdateRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.Updat * Use `create(UpdateRoleResponseSchema)` to create a new message. */ export const UpdateRoleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 161); + messageDesc(file_api_service_v1alpha1_service, 168); /** * CreateAPITokenRequest is a request to generate a new bearer token associated @@ -4704,7 +5004,7 @@ export type CreateAPITokenRequest = Message<"akuity.io.kargo.service.v1alpha1.Cr * Use `create(CreateAPITokenRequestSchema)` to create a new message. */ export const CreateAPITokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 162); + messageDesc(file_api_service_v1alpha1_service, 169); /** * CreateAPITokenResponse contains a newly generated bearer token in the form of @@ -4726,7 +5026,7 @@ export type CreateAPITokenResponse = Message<"akuity.io.kargo.service.v1alpha1.C * Use `create(CreateAPITokenResponseSchema)` to create a new message. */ export const CreateAPITokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 163); + messageDesc(file_api_service_v1alpha1_service, 170); /** * DeleteAPITokenRequest is a request to delete a bearer token associated with a @@ -4765,7 +5065,7 @@ export type DeleteAPITokenRequest = Message<"akuity.io.kargo.service.v1alpha1.De * Use `create(DeleteAPITokenRequestSchema)` to create a new message. */ export const DeleteAPITokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 164); + messageDesc(file_api_service_v1alpha1_service, 171); /** * DeleteAPITokenResponse is the response returned after deleting a bearer token @@ -4783,7 +5083,7 @@ export type DeleteAPITokenResponse = Message<"akuity.io.kargo.service.v1alpha1.D * Use `create(DeleteAPITokenResponseSchema)` to create a new message. */ export const DeleteAPITokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 165); + messageDesc(file_api_service_v1alpha1_service, 172); /** * GetAPITokenRequest is a request to retrieve details of a bearer token @@ -4829,7 +5129,7 @@ export type GetAPITokenRequest = Message<"akuity.io.kargo.service.v1alpha1.GetAP * Use `create(GetAPITokenRequestSchema)` to create a new message. */ export const GetAPITokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 166); + messageDesc(file_api_service_v1alpha1_service, 173); /** * GetAPITokenResponse contains contains the details of a bearer token @@ -4866,7 +5166,7 @@ export type GetAPITokenResponse = Message<"akuity.io.kargo.service.v1alpha1.GetA * Use `create(GetAPITokenResponseSchema)` to create a new message. */ export const GetAPITokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 167); + messageDesc(file_api_service_v1alpha1_service, 174); /** * ListAPITokensRequest is a request to list bearer tokens associated with a @@ -4904,7 +5204,7 @@ export type ListAPITokensRequest = Message<"akuity.io.kargo.service.v1alpha1.Lis * Use `create(ListAPITokensRequestSchema)` to create a new message. */ export const ListAPITokensRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 168); + messageDesc(file_api_service_v1alpha1_service, 175); /** * ListAPITokensResponse contains a list of bearer tokens associated with a @@ -4927,7 +5227,7 @@ export type ListAPITokensResponse = Message<"akuity.io.kargo.service.v1alpha1.Li * Use `create(ListAPITokensResponseSchema)` to create a new message. */ export const ListAPITokensResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 169); + messageDesc(file_api_service_v1alpha1_service, 176); /** * @generated from message akuity.io.kargo.service.v1alpha1.RefreshResourceRequest @@ -4963,7 +5263,7 @@ export type RefreshResourceRequest = Message<"akuity.io.kargo.service.v1alpha1.R * Use `create(RefreshResourceRequestSchema)` to create a new message. */ export const RefreshResourceRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 170); + messageDesc(file_api_service_v1alpha1_service, 177); /** * @generated from message akuity.io.kargo.service.v1alpha1.RefreshResourceResponse @@ -4980,7 +5280,7 @@ export type RefreshResourceResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(RefreshResourceResponseSchema)` to create a new message. */ export const RefreshResourceResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 171); + messageDesc(file_api_service_v1alpha1_service, 178); /** * RawFormat specifies the format for raw resource representation. @@ -5128,6 +5428,19 @@ export const KargoService: GenService<{ input: typeof ListStagesRequestSchema; output: typeof ListStagesResponseSchema; }, + /** + * ListStageSummaries retrieves a lightweight projection of Stages within a + * project, containing only the fields typically required to render list + * and graph views. Use GetStage to retrieve the full Stage resource when + * detail-level fields are needed. + * + * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries + */ + listStageSummaries: { + methodKind: "unary"; + input: typeof ListStageSummariesRequestSchema; + output: typeof ListStageSummariesResponseSchema; + }, /** * ListImages returns available images and their usage across stages. * @@ -5158,6 +5471,18 @@ export const KargoService: GenService<{ input: typeof WatchStagesRequestSchema; output: typeof WatchStagesResponseSchema; }, + /** + * WatchStageSummaries provides a streaming interface to monitor stage + * changes, returning the same lightweight projection as + * ListStageSummaries for each event. + * + * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries + */ + watchStageSummaries: { + methodKind: "server_streaming"; + input: typeof WatchStageSummariesRequestSchema; + output: typeof WatchStageSummariesResponseSchema; + }, /** * DeleteStage removes a stage from the system. * diff --git a/ui/src/gen/api/v2/core/core.ts b/ui/src/gen/api/v2/core/core.ts index b413884c4f..c2b9e84c2c 100644 --- a/ui/src/gen/api/v2/core/core.ts +++ b/ui/src/gen/api/v2/core/core.ts @@ -27,8 +27,10 @@ import type { ClusterPromotionTaskList, CreateConfigMapRequestBody, Freight, + GithubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse, ListImages200, ListPromotionsParams, + ListStageSummariesParams, PatchConfigMapRequestBody, PatchFreightAliasParams, Project, @@ -2895,6 +2897,178 @@ export const useRefreshPromotion = ( return useMutation(mutationOptions, queryClient); }; +/** + * List a lightweight projection of Stage resources from a +project's namespace. Intended for UI list and graph views that +need metadata and current state for many Stages at once but do +not need full FreightHistory, PromotionTemplate steps, or +Verification configuration. Use GetStage for detail fields. + * @summary List Stage Summaries + */ +export type listStageSummariesResponse200 = { + data: GithubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse; + status: 200; +}; + +export type listStageSummariesResponseSuccess = listStageSummariesResponse200 & { + headers: Headers; +}; +export type listStageSummariesResponse = listStageSummariesResponseSuccess; + +export const getListStageSummariesUrl = (project: string, params?: ListStageSummariesParams) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + const explodeParameters = ['freightOrigins']; + + if (Array.isArray(value) && explodeParameters.includes(key)) { + value.forEach((v) => { + normalizedParams.append(key, v === null ? 'null' : v.toString()); + }); + return; + } + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()); + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 + ? `/v1beta1/projects/${project}/stage-summaries?${stringifiedParams}` + : `/v1beta1/projects/${project}/stage-summaries`; +}; + +export const listStageSummaries = async ( + project: string, + params?: ListStageSummariesParams, + options?: RequestInit +): Promise => { + return customFetch(getListStageSummariesUrl(project, params), { + ...options, + method: 'GET' + }); +}; + +export const getListStageSummariesQueryKey = ( + project?: string, + params?: ListStageSummariesParams +) => { + return [`/v1beta1/projects/${project}/stage-summaries`, ...(params ? [params] : [])] as const; +}; + +export const getListStageSummariesQueryOptions = < + TData = Awaited>, + TError = unknown +>( + project: string, + params?: ListStageSummariesParams, + options?: { + query?: Partial>, TError, TData>>; + request?: SecondParameter; + } +) => { + const { query: queryOptions, request: requestOptions } = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getListStageSummariesQueryKey(project, params); + + const queryFn: QueryFunction>> = () => + listStageSummaries(project, params, requestOptions); + + return { queryKey, queryFn, enabled: !!project, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ListStageSummariesQueryResult = NonNullable< + Awaited> +>; +export type ListStageSummariesQueryError = unknown; + +export function useListStageSummaries< + TData = Awaited>, + TError = unknown +>( + project: string, + params: undefined | ListStageSummariesParams, + options: { + query: Partial>, TError, TData>> & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + 'initialData' + >; + request?: SecondParameter; + }, + queryClient?: QueryClient +): DefinedUseQueryResult & { queryKey: DataTag }; +export function useListStageSummaries< + TData = Awaited>, + TError = unknown +>( + project: string, + params?: ListStageSummariesParams, + options?: { + query?: Partial< + UseQueryOptions>, TError, TData> + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + 'initialData' + >; + request?: SecondParameter; + }, + queryClient?: QueryClient +): UseQueryResult & { queryKey: DataTag }; +export function useListStageSummaries< + TData = Awaited>, + TError = unknown +>( + project: string, + params?: ListStageSummariesParams, + options?: { + query?: Partial>, TError, TData>>; + request?: SecondParameter; + }, + queryClient?: QueryClient +): UseQueryResult & { queryKey: DataTag }; +/** + * @summary List Stage Summaries + */ + +export function useListStageSummaries< + TData = Awaited>, + TError = unknown +>( + project: string, + params?: ListStageSummariesParams, + options?: { + query?: Partial>, TError, TData>>; + request?: SecondParameter; + }, + queryClient?: QueryClient +): UseQueryResult & { queryKey: DataTag } { + const queryOptions = getListStageSummariesQueryOptions(project, params, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { + queryKey: DataTag; + }; + + query.queryKey = queryOptions.queryKey; + + return query; +} + /** * List Stage resources from a project's namespace. Returns a StageList resource. diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse.ts new file mode 100644 index 0000000000..56d00f9ffc --- /dev/null +++ b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse.ts @@ -0,0 +1,18 @@ +/** + * Generated by orval v7.19.0 🍺 + * Do not edit manually. + * Kargo API + * REST API for Kargo + * OpenAPI spec version: v1alpha1 + */ +import type { GithubComAkuityKargoApiServiceV1alpha1StageSummary } from './githubComAkuityKargoApiServiceV1alpha1StageSummary'; + +export interface GithubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse { + /** resourceVersion is the Kubernetes ResourceVersion of the underlying +StageList. Clients may pass this value to WatchStageSummaries to begin +watching from the exact point this list was taken, receiving only +subsequent changes without redundant initial events. */ + resourceVersion?: string; + /** stageSummaries is the list of StageSummary objects found in the project. */ + stageSummaries?: GithubComAkuityKargoApiServiceV1alpha1StageSummary[]; +} diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSpecSummary.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSpecSummary.ts new file mode 100644 index 0000000000..147c923b2a --- /dev/null +++ b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSpecSummary.ts @@ -0,0 +1,24 @@ +/** + * Generated by orval v7.19.0 🍺 + * Do not edit manually. + * Kargo API + * REST API for Kargo + * OpenAPI spec version: v1alpha1 + */ +import type { FreightRequest } from './freightRequest'; + +export interface GithubComAkuityKargoApiServiceV1alpha1StageSpecSummary { + /** hasVerification indicates whether the Stage defines a Verification. +Use GetStage to retrieve the full Verification configuration. */ + hasVerification?: boolean; + /** promotionStepCount is the number of promotion steps defined in the +Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. +Use GetStage to retrieve the full step configuration. */ + promotionStepCount?: number; + /** requestedFreight mirrors StageSpec.requestedFreight. This is needed in +full to render graph edges between Stages and their upstream sources. */ + requestedFreight?: FreightRequest[]; + /** shard is the name of the shard that the Stage belongs to, mirroring +StageSpec.shard. */ + shard?: string; +} diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageStatusSummary.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageStatusSummary.ts new file mode 100644 index 0000000000..da362ec9c6 --- /dev/null +++ b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageStatusSummary.ts @@ -0,0 +1,32 @@ +/** + * Generated by orval v7.19.0 🍺 + * Do not edit manually. + * Kargo API + * REST API for Kargo + * OpenAPI spec version: v1alpha1 + */ +import type { V1Condition } from './v1Condition'; +import type { FreightCollection } from './freightCollection'; +import type { PromotionReference } from './promotionReference'; +import type { Health } from './health'; + +export interface GithubComAkuityKargoApiServiceV1alpha1StageStatusSummary { + /** autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. */ + autoPromotionEnabled?: boolean; + /** conditions mirrors StageStatus.conditions. */ + conditions?: V1Condition[]; + /** currentFreight is the FreightCollection currently deployed to the Stage +(i.e. index 0 of StageStatus.freightHistory), or null if no Freight has +been deployed. Use GetStage to retrieve the full FreightHistory. */ + currentFreight?: FreightCollection; + /** currentPromotion mirrors StageStatus.currentPromotion. */ + currentPromotion?: PromotionReference; + /** health mirrors StageStatus.health. */ + health?: Health; + /** lastHandledRefresh mirrors StageStatus.lastHandledRefresh. */ + lastHandledRefresh?: string; + /** lastPromotion mirrors StageStatus.lastPromotion. */ + lastPromotion?: PromotionReference; + /** observedGeneration mirrors StageStatus.observedGeneration. */ + observedGeneration?: number; +} diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSummary.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSummary.ts new file mode 100644 index 0000000000..8cbf6aa416 --- /dev/null +++ b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSummary.ts @@ -0,0 +1,19 @@ +/** + * Generated by orval v7.19.0 🍺 + * Do not edit manually. + * Kargo API + * REST API for Kargo + * OpenAPI spec version: v1alpha1 + */ +import type { V1ObjectMeta } from './v1ObjectMeta'; +import type { GithubComAkuityKargoApiServiceV1alpha1StageSpecSummary } from './githubComAkuityKargoApiServiceV1alpha1StageSpecSummary'; +import type { GithubComAkuityKargoApiServiceV1alpha1StageStatusSummary } from './githubComAkuityKargoApiServiceV1alpha1StageStatusSummary'; + +export interface GithubComAkuityKargoApiServiceV1alpha1StageSummary { + /** metadata contains the Stage's identity and Kubernetes object metadata. */ + metadata?: V1ObjectMeta; + /** spec contains the subset of StageSpec fields needed by list/graph views. */ + spec?: GithubComAkuityKargoApiServiceV1alpha1StageSpecSummary; + /** status contains the subset of StageStatus fields needed by list/graph views. */ + status?: GithubComAkuityKargoApiServiceV1alpha1StageStatusSummary; +} diff --git a/ui/src/gen/api/v2/models/index.ts b/ui/src/gen/api/v2/models/index.ts index f6a267ccda..a0ce86edd1 100644 --- a/ui/src/gen/api/v2/models/index.ts +++ b/ui/src/gen/api/v2/models/index.ts @@ -87,6 +87,10 @@ export * from './gitDiscoveryResult'; export * from './gitHubWebhookReceiverConfig'; export * from './gitLabWebhookReceiverConfig'; export * from './giteaWebhookReceiverConfig'; +export * from './githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse'; +export * from './githubComAkuityKargoApiServiceV1alpha1StageSpecSummary'; +export * from './githubComAkuityKargoApiServiceV1alpha1StageStatusSummary'; +export * from './githubComAkuityKargoApiServiceV1alpha1StageSummary'; export * from './grantRequest'; export * from './harborWebhookReceiverConfig'; export * from './health'; @@ -107,6 +111,7 @@ export * from './listImages200'; export * from './listProjectAPITokensParams'; export * from './listProjectRoles200'; export * from './listPromotionsParams'; +export * from './listStageSummariesParams'; export * from './listSystemAPITokensParams'; export * from './listSystemRoles200'; export * from './oIDCConfig'; diff --git a/ui/src/gen/api/v2/models/listStageSummariesParams.ts b/ui/src/gen/api/v2/models/listStageSummariesParams.ts new file mode 100644 index 0000000000..551e069dda --- /dev/null +++ b/ui/src/gen/api/v2/models/listStageSummariesParams.ts @@ -0,0 +1,14 @@ +/** + * Generated by orval v7.19.0 🍺 + * Do not edit manually. + * Kargo API + * REST API for Kargo + * OpenAPI spec version: v1alpha1 + */ + +export type ListStageSummariesParams = { + /** + * Warehouse name(s) to filter by + */ + freightOrigins?: string[]; +}; From 4f4d8a09ec6f0442794147c16b185ffcd7cb4967 Mon Sep 17 00:00:00 2001 From: Jacob Boykin Date: Thu, 23 Apr 2026 19:41:15 -0400 Subject: [PATCH 2/7] chore(api): rename StageSummary proto fields to snake_case Buf lint enforces lower_snake_case for proto field names. Updated the new StageSummary / ListStageSummaries / WatchStageSummaries messages accordingly. Generated Go struct names (StageSummaries, FreightOrigins, etc.) and protojson wire format (camelCase via the json= tag) are unchanged. Swagger and TypeScript bindings regenerated to match. Signed-off-by: Jacob Boykin Signed-off-by: Jacob Boykin --- api/service/v1alpha1/service.pb.go | 3273 +++++++++-------- api/service/v1alpha1/service.proto | 30 +- docs/docs/90-api-documentation.md | 30 +- ..._v1alpha1_list_stage_summaries_response.go | 12 +- ...api_service_v1alpha1_stage_spec_summary.go | 14 +- ...i_service_v1alpha1_stage_status_summary.go | 12 +- swagger.json | 22 +- ui/src/gen/api/service/v1alpha1/service_pb.ts | 32 +- ...rviceV1alpha1ListStageSummariesResponse.ts | 4 +- ...KargoApiServiceV1alpha1StageSpecSummary.ts | 6 +- ...rgoApiServiceV1alpha1StageStatusSummary.ts | 12 +- 11 files changed, 1724 insertions(+), 1723 deletions(-) diff --git a/api/service/v1alpha1/service.pb.go b/api/service/v1alpha1/service.pb.go index 1cbfb24255..9b9a6e9319 100644 --- a/api/service/v1alpha1/service.pb.go +++ b/api/service/v1alpha1/service.pb.go @@ -2268,14 +2268,14 @@ type StageSpecSummary struct { Shard string `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` // requestedFreight mirrors StageSpec.requestedFreight. This is needed in // full to render graph edges between Stages and their upstream sources. - RequestedFreight []*v1alpha1.FreightRequest `protobuf:"bytes,2,rep,name=requestedFreight,proto3" json:"requestedFreight,omitempty"` + RequestedFreight []*v1alpha1.FreightRequest `protobuf:"bytes,2,rep,name=requested_freight,json=requestedFreight,proto3" json:"requested_freight,omitempty"` // promotionStepCount is the number of promotion steps defined in the // Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. // Use GetStage to retrieve the full step configuration. - PromotionStepCount int32 `protobuf:"varint,3,opt,name=promotionStepCount,proto3" json:"promotionStepCount,omitempty"` + PromotionStepCount int32 `protobuf:"varint,3,opt,name=promotion_step_count,json=promotionStepCount,proto3" json:"promotion_step_count,omitempty"` // hasVerification indicates whether the Stage defines a Verification. // Use GetStage to retrieve the full Verification configuration. - HasVerification bool `protobuf:"varint,4,opt,name=hasVerification,proto3" json:"hasVerification,omitempty"` + HasVerification bool `protobuf:"varint,4,opt,name=has_verification,json=hasVerification,proto3" json:"has_verification,omitempty"` } func (x *StageSpecSummary) Reset() { @@ -2348,21 +2348,21 @@ type StageStatusSummary struct { // conditions mirrors StageStatus.conditions. Conditions []*v1.Condition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"` // lastHandledRefresh mirrors StageStatus.lastHandledRefresh. - LastHandledRefresh string `protobuf:"bytes,2,opt,name=lastHandledRefresh,proto3" json:"lastHandledRefresh,omitempty"` + LastHandledRefresh string `protobuf:"bytes,2,opt,name=last_handled_refresh,json=lastHandledRefresh,proto3" json:"last_handled_refresh,omitempty"` // currentFreight is the FreightCollection currently deployed to the Stage // (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has // been deployed. Use GetStage to retrieve the full FreightHistory. - CurrentFreight *v1alpha1.FreightCollection `protobuf:"bytes,3,opt,name=currentFreight,proto3,oneof" json:"currentFreight,omitempty"` + CurrentFreight *v1alpha1.FreightCollection `protobuf:"bytes,3,opt,name=current_freight,json=currentFreight,proto3,oneof" json:"current_freight,omitempty"` // currentPromotion mirrors StageStatus.currentPromotion. - CurrentPromotion *v1alpha1.PromotionReference `protobuf:"bytes,4,opt,name=currentPromotion,proto3,oneof" json:"currentPromotion,omitempty"` + CurrentPromotion *v1alpha1.PromotionReference `protobuf:"bytes,4,opt,name=current_promotion,json=currentPromotion,proto3,oneof" json:"current_promotion,omitempty"` // lastPromotion mirrors StageStatus.lastPromotion. - LastPromotion *v1alpha1.PromotionReference `protobuf:"bytes,5,opt,name=lastPromotion,proto3,oneof" json:"lastPromotion,omitempty"` + LastPromotion *v1alpha1.PromotionReference `protobuf:"bytes,5,opt,name=last_promotion,json=lastPromotion,proto3,oneof" json:"last_promotion,omitempty"` // health mirrors StageStatus.health. Health *v1alpha1.Health `protobuf:"bytes,6,opt,name=health,proto3,oneof" json:"health,omitempty"` // observedGeneration mirrors StageStatus.observedGeneration. - ObservedGeneration int64 `protobuf:"varint,7,opt,name=observedGeneration,proto3" json:"observedGeneration,omitempty"` + ObservedGeneration int64 `protobuf:"varint,7,opt,name=observed_generation,json=observedGeneration,proto3" json:"observed_generation,omitempty"` // autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. - AutoPromotionEnabled bool `protobuf:"varint,8,opt,name=autoPromotionEnabled,proto3" json:"autoPromotionEnabled,omitempty"` + AutoPromotionEnabled bool `protobuf:"varint,8,opt,name=auto_promotion_enabled,json=autoPromotionEnabled,proto3" json:"auto_promotion_enabled,omitempty"` } func (x *StageStatusSummary) Reset() { @@ -2466,7 +2466,7 @@ type ListStageSummariesRequest struct { // only Stages that request Freight originating from at least one of the // named Warehouses (directly or transitively via upstream Stages) will be // returned. Mirrors ListStagesRequest.freightOrigins. - FreightOrigins []string `protobuf:"bytes,2,rep,name=freightOrigins,proto3" json:"freightOrigins,omitempty"` + FreightOrigins []string `protobuf:"bytes,2,rep,name=freight_origins,json=freightOrigins,proto3" json:"freight_origins,omitempty"` } func (x *ListStageSummariesRequest) Reset() { @@ -2522,12 +2522,12 @@ type ListStageSummariesResponse struct { unknownFields protoimpl.UnknownFields // stageSummaries is the list of StageSummary objects found in the project. - StageSummaries []*StageSummary `protobuf:"bytes,1,rep,name=stageSummaries,proto3" json:"stageSummaries,omitempty"` + StageSummaries []*StageSummary `protobuf:"bytes,1,rep,name=stage_summaries,json=stageSummaries,proto3" json:"stage_summaries,omitempty"` // resourceVersion is the Kubernetes ResourceVersion of the underlying // StageList. Clients may pass this value to WatchStageSummaries to begin // watching from the exact point this list was taken, receiving only // subsequent changes without redundant initial events. - ResourceVersion string `protobuf:"bytes,2,opt,name=resourceVersion,proto3" json:"resourceVersion,omitempty"` + ResourceVersion string `protobuf:"bytes,2,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"` } func (x *ListStageSummariesResponse) Reset() { @@ -2590,11 +2590,11 @@ type WatchStageSummariesRequest struct { // only events for Stages that request Freight originating from at least // one of the named Warehouses (directly or transitively via upstream // Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. - FreightOrigins []string `protobuf:"bytes,3,rep,name=freightOrigins,proto3" json:"freightOrigins,omitempty"` + FreightOrigins []string `protobuf:"bytes,3,rep,name=freight_origins,json=freightOrigins,proto3" json:"freight_origins,omitempty"` // resourceVersion is an optional Kubernetes ResourceVersion. When set, // the watch begins at the specified version, allowing clients to resume // from a prior list or watch without missing or duplicating events. - ResourceVersion string `protobuf:"bytes,4,opt,name=resourceVersion,proto3" json:"resourceVersion,omitempty"` + ResourceVersion string `protobuf:"bytes,4,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"` } func (x *WatchStageSummariesRequest) Reset() { @@ -2664,7 +2664,7 @@ type WatchStageSummariesResponse struct { unknownFields protoimpl.UnknownFields // stageSummary is the StageSummary for the Stage that changed. - StageSummary *StageSummary `protobuf:"bytes,1,opt,name=stageSummary,proto3,oneof" json:"stageSummary,omitempty"` + StageSummary *StageSummary `protobuf:"bytes,1,opt,name=stage_summary,json=stageSummary,proto3,oneof" json:"stage_summary,omitempty"` // type indicates the type of change (ADDED, MODIFIED, DELETED). Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } @@ -11331,1783 +11331,1784 @@ var file_api_service_v1alpha1_service_proto_rawDesc = []byte{ 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x12, 0x60, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, - 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbf, 0x05, 0x0a, - 0x12, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x12, 0x4f, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x6b, - 0x67, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x64, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x12, 0x64, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x46, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x10, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, - 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, + 0x12, 0x61, 0x0a, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x46, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0f, 0x68, 0x61, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xca, 0x05, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x4f, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x38, + 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x72, + 0x79, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x64, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x65, 0x0a, 0x0f, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x6a, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x02, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x06, 0x68, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x48, 0x03, 0x52, 0x06, 0x68, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x12, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x12, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0x5d, - 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0x9e, 0x01, - 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0e, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9c, - 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x66, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x01, - 0x0a, 0x1b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, - 0x0c, 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, - 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x5e, 0x0a, 0x17, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8c, - 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, - 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x64, 0x0a, + 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, - 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, + 0x02, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x57, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x48, 0x03, 0x52, 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, + 0x0a, 0x13, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x34, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x14, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0x5e, 0x0a, + 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xa0, 0x01, + 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0f, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0x9e, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, - 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x70, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x03, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, + 0x0f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0x9d, 0x01, 0x0a, 0x1b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x22, 0x5e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, + 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, - 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x45, 0x0a, 0x15, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x7b, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x45, - 0x0a, 0x15, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, - 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x69, 0x0a, 0x16, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x04, 0x70, 0x61, 0x67, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, - 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x03, 0x52, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, - 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6d, 0x69, 0x6e, 0x65, 0x22, 0x77, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x49, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x22, 0x78, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x0a, 0x19, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x5a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x22, 0x71, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x0a, - 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, + 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x57, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, + 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x43, 0x0a, 0x06, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x48, 0x00, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x22, 0x2f, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x22, 0x73, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, - 0x67, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x22, 0x6c, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x22, 0x45, 0x0a, 0x15, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x45, 0x0a, 0x15, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, + 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, + 0x01, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x69, 0x6e, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x88, + 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x69, 0x6e, 0x65, 0x22, 0x77, 0x0a, + 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x78, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, + 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, + 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, - 0x68, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x0b, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x22, 0x83, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, + 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, + 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x35, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x71, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, - 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, - 0x65, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x0f, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, - 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x41, 0x62, 0x6f, 0x72, - 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, - 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, - 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, - 0x73, 0x65, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, - 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, - 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, - 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, 0x77, - 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, + 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, + 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, + 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x48, 0x00, 0x52, + 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x46, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, - 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2f, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x73, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x86, 0x01, 0x0a, + 0x15, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x67, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, + 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, + 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x6c, 0x0a, 0x19, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7c, - 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, - 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x18, 0x0a, 0x07, + 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, + 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, + 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x06, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x68, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x56, 0x0a, 0x0b, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, + 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, + 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1c, 0x0a, + 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x0f, 0x52, + 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x12, + 0x0a, 0x10, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x1b, + 0x0a, 0x19, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x0a, 0x15, 0x4c, + 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x69, + 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x77, 0x61, 0x72, 0x65, + 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, - 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x16, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, + 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, + 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, + 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, + 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, + 0x65, 0x48, 0x00, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, + 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, + 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x46, 0x0a, 0x16, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, - 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xba, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x57, 0x0a, 0x17, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, - 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x69, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x15, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x22, 0x58, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, - 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, - 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, + 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x22, 0x46, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, + 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xba, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, + 0x61, 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, 0x57, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, + 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x69, 0x0a, 0x16, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, - 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0xba, 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x65, 0x22, 0x54, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, + 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x57, 0x0a, 0x17, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x58, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x73, 0x22, 0xab, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, + 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, + 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, + 0x74, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x80, 0x02, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, - 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, - 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, - 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, - 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x4c, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xba, 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, + 0x61, 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, 0x57, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, + 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x80, 0x02, 0x0a, 0x1c, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, + 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, + 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, + 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x4c, 0x0a, + 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7a, 0x0a, + 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, + 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, + 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, - 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5b, 0x0a, 0x1b, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x80, 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, - 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, - 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, - 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x5c, 0x0a, 0x1d, 0x4c, 0x69, - 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5e, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x74, 0x22, 0x5b, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x80, + 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, - 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, + 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, + 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, + 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x22, 0x5c, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, - 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x72, 0x0a, 0x1f, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x22, - 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5e, + 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, + 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, 0x0a, + 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, + 0xcc, 0x02, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, + 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x38, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x95, 0x01, 0x0a, - 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, - 0x0a, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, - 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x10, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, - 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, - 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x4d, 0x0a, 0x1d, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1a, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x22, 0x72, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x22, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x18, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x7c, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xcf, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, - 0x0a, 0x19, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, - 0x00, 0x52, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, - 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, - 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x3a, 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, - 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x9d, - 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0c, 0x61, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x40, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, - 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, - 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, - 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, - 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, - 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, - 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x34, 0x0a, 0x18, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x22, 0x4e, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, - 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x22, 0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, - 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1a, 0x47, + 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xb1, 0x01, 0x0a, + 0x1b, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x11, + 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, + 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, + 0x52, 0x10, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x4d, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x25, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, + 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x18, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x7c, + 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xcf, 0x01, 0x0a, + 0x22, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x19, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0d, - 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, - 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, - 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x22, 0x0a, 0x20, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x97, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x79, 0x0a, 0x1e, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, + 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, + 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x3a, + 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x25, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x14, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x58, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x72, 0x6d, 0x61, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x65, 0x0a, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, - 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, - 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x1a, + 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, + 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, + 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, + 0x22, 0x34, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x4e, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x7a, 0x0a, + 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x70, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x22, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x17, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, + 0x79, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x1f, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, + 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x48, 0x00, 0x52, 0x14, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, + 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, + 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x58, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, 0x0a, + 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xc9, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x58, 0x0a, + 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, + 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x52, 0x0a, 0x06, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, + 0x48, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x30, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, + 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, + 0x6d, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x47, 0x72, + 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, + 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, + 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x54, 0x0a, 0x0d, 0x47, 0x72, 0x61, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, + 0x72, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xd0, 0x01, 0x0a, - 0x0f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x45, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, - 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x48, - 0x00, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, - 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x52, 0x0a, 0x06, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6c, 0x61, - 0x69, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x06, 0x63, 0x6c, 0x61, - 0x69, 0x6d, 0x73, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, - 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, - 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x54, 0x0a, 0x0d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, - 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x72, 0x0a, 0x10, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xb2, 0x01, - 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, - 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x09, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, - 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, - 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x6f, 0x6c, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, + 0x12, 0x56, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x76, + 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, + 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, + 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x0e, 0x52, 0x65, 0x76, + 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x0e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, + 0x22, 0x58, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x58, 0x0a, 0x11, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, - 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, - 0x85, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x22, 0x68, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x22, 0x74, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x70, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, + 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x15, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, - 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x73, 0x22, 0x6b, 0x0a, 0x16, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x22, 0x4b, 0x0a, 0x17, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2a, 0x51, 0x0a, - 0x09, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x41, - 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, - 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, - 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x02, - 0x32, 0xd3, 0x58, 0x0a, 0x0c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, + 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x68, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x12, 0x47, + 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x74, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x50, + 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, + 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x48, 0x00, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, + 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, + 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x70, 0x0a, + 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x58, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0c, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x6b, 0x0a, 0x16, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x17, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x2a, 0x51, 0x0a, 0x09, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, + 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, + 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, + 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x02, 0x32, 0xd3, 0x58, 0x0a, 0x0c, 0x4b, 0x61, 0x72, 0x67, 0x6f, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, + 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x86, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, + 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3b, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x7c, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, + 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x94, 0x01, - 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x30, 0x01, 0x12, 0x7a, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x30, 0x01, 0x12, 0x94, 0x01, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3c, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7a, 0x0a, 0x0b, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, - 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x0e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, - 0x0a, 0x0e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, - 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x7d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, - 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, - 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x0e, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, + 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, - 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, + 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, - 0x11, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, - 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, + 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, + 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, + 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, + 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, - 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, - 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x8c, 0x01, 0x0a, 0x11, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, - 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, - 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, - 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, - 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, - 0x6f, 0x75, 0x73, 0x65, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, - 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, - 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, + 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, - 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, - 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, - 0x73, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x38, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, - 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, - 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, + 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x9b, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, - 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x86, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 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, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 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, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 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, 0x12, 0x83, 0x01, 0x0a, 0x0e, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x37, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x98, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x44, 0x65, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x47, + 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x9b, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xad, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x45, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa7, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x12, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x47, 0x2e, 0x61, 0x6b, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, - 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, - 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xad, 0x01, + 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x45, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, - 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8c, - 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, - 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa7, 0x01, + 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x44, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x47, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0xa4, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x42, 0x2e, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x39, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x40, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, - 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x91, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, - 0x12, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x2e, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x74, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa4, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x73, 0x12, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, + 0x6b, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x06, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, - 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x61, 0x73, 0x6b, 0x12, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x07, 0x47, + 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x05, 0x47, + 0x72, 0x61, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x06, 0x52, + 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x50, - 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a, 0x0a, + 0x0b, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x93, 0x02, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, - 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2f, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x73, 0x76, - 0x63, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x04, 0x41, 0x49, 0x4b, 0x53, - 0xaa, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x6f, 0x2e, 0x4b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0xca, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, - 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x2c, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, - 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x24, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x3a, 0x3a, - 0x49, 0x6f, 0x3a, 0x3a, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x36, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x93, 0x02, 0x0a, + 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2f, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x3b, 0x73, 0x76, 0x63, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, + 0x02, 0x04, 0x41, 0x49, 0x4b, 0x53, 0xaa, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x49, 0x6f, 0x2e, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x2c, 0x41, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x24, 0x41, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x3a, 0x3a, 0x49, 0x6f, 0x3a, 0x3a, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x3a, + 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -13363,14 +13364,14 @@ var file_api_service_v1alpha1_service_proto_depIdxs = []int32{ 191, // 17: akuity.io.kargo.service.v1alpha1.StageSummary.metadata:type_name -> k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta 38, // 18: akuity.io.kargo.service.v1alpha1.StageSummary.spec:type_name -> akuity.io.kargo.service.v1alpha1.StageSpecSummary 39, // 19: akuity.io.kargo.service.v1alpha1.StageSummary.status:type_name -> akuity.io.kargo.service.v1alpha1.StageStatusSummary - 192, // 20: akuity.io.kargo.service.v1alpha1.StageSpecSummary.requestedFreight:type_name -> github.com.akuity.kargo.api.v1alpha1.FreightRequest + 192, // 20: akuity.io.kargo.service.v1alpha1.StageSpecSummary.requested_freight:type_name -> github.com.akuity.kargo.api.v1alpha1.FreightRequest 193, // 21: akuity.io.kargo.service.v1alpha1.StageStatusSummary.conditions:type_name -> k8s.io.apimachinery.pkg.apis.meta.v1.Condition - 194, // 22: akuity.io.kargo.service.v1alpha1.StageStatusSummary.currentFreight:type_name -> github.com.akuity.kargo.api.v1alpha1.FreightCollection - 195, // 23: akuity.io.kargo.service.v1alpha1.StageStatusSummary.currentPromotion:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionReference - 195, // 24: akuity.io.kargo.service.v1alpha1.StageStatusSummary.lastPromotion:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionReference + 194, // 22: akuity.io.kargo.service.v1alpha1.StageStatusSummary.current_freight:type_name -> github.com.akuity.kargo.api.v1alpha1.FreightCollection + 195, // 23: akuity.io.kargo.service.v1alpha1.StageStatusSummary.current_promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionReference + 195, // 24: akuity.io.kargo.service.v1alpha1.StageStatusSummary.last_promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionReference 196, // 25: akuity.io.kargo.service.v1alpha1.StageStatusSummary.health:type_name -> github.com.akuity.kargo.api.v1alpha1.Health - 37, // 26: akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse.stageSummaries:type_name -> akuity.io.kargo.service.v1alpha1.StageSummary - 37, // 27: akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse.stageSummary:type_name -> akuity.io.kargo.service.v1alpha1.StageSummary + 37, // 26: akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse.stage_summaries:type_name -> akuity.io.kargo.service.v1alpha1.StageSummary + 37, // 27: akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse.stage_summary:type_name -> akuity.io.kargo.service.v1alpha1.StageSummary 0, // 28: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat 197, // 29: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig 197, // 30: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig diff --git a/api/service/v1alpha1/service.proto b/api/service/v1alpha1/service.proto index f0a262f5ec..b337e3da07 100644 --- a/api/service/v1alpha1/service.proto +++ b/api/service/v1alpha1/service.proto @@ -566,14 +566,14 @@ message StageSpecSummary { string shard = 1; // requestedFreight mirrors StageSpec.requestedFreight. This is needed in // full to render graph edges between Stages and their upstream sources. - repeated github.com.akuity.kargo.api.v1alpha1.FreightRequest requestedFreight = 2; + repeated github.com.akuity.kargo.api.v1alpha1.FreightRequest requested_freight = 2; // promotionStepCount is the number of promotion steps defined in the // Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. // Use GetStage to retrieve the full step configuration. - int32 promotionStepCount = 3; + int32 promotion_step_count = 3; // hasVerification indicates whether the Stage defines a Verification. // Use GetStage to retrieve the full Verification configuration. - bool hasVerification = 4; + bool has_verification = 4; } // StageStatusSummary is the subset of StageStatus fields returned by @@ -582,21 +582,21 @@ message StageStatusSummary { // conditions mirrors StageStatus.conditions. repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 1; // lastHandledRefresh mirrors StageStatus.lastHandledRefresh. - string lastHandledRefresh = 2; + string last_handled_refresh = 2; // currentFreight is the FreightCollection currently deployed to the Stage // (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has // been deployed. Use GetStage to retrieve the full FreightHistory. - optional github.com.akuity.kargo.api.v1alpha1.FreightCollection currentFreight = 3; + optional github.com.akuity.kargo.api.v1alpha1.FreightCollection current_freight = 3; // currentPromotion mirrors StageStatus.currentPromotion. - optional github.com.akuity.kargo.api.v1alpha1.PromotionReference currentPromotion = 4; + optional github.com.akuity.kargo.api.v1alpha1.PromotionReference current_promotion = 4; // lastPromotion mirrors StageStatus.lastPromotion. - optional github.com.akuity.kargo.api.v1alpha1.PromotionReference lastPromotion = 5; + optional github.com.akuity.kargo.api.v1alpha1.PromotionReference last_promotion = 5; // health mirrors StageStatus.health. optional github.com.akuity.kargo.api.v1alpha1.Health health = 6; // observedGeneration mirrors StageStatus.observedGeneration. - int64 observedGeneration = 7; + int64 observed_generation = 7; // autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. - bool autoPromotionEnabled = 8; + bool auto_promotion_enabled = 8; } // ListStageSummariesRequest is the request for listing stage summaries @@ -608,18 +608,18 @@ message ListStageSummariesRequest { // only Stages that request Freight originating from at least one of the // named Warehouses (directly or transitively via upstream Stages) will be // returned. Mirrors ListStagesRequest.freightOrigins. - repeated string freightOrigins = 2; + repeated string freight_origins = 2; } // ListStageSummariesResponse contains a list of stage summaries within a project. message ListStageSummariesResponse { // stageSummaries is the list of StageSummary objects found in the project. - repeated StageSummary stageSummaries = 1; + repeated StageSummary stage_summaries = 1; // resourceVersion is the Kubernetes ResourceVersion of the underlying // StageList. Clients may pass this value to WatchStageSummaries to begin // watching from the exact point this list was taken, receiving only // subsequent changes without redundant initial events. - string resourceVersion = 2; + string resource_version = 2; } // WatchStageSummariesRequest is the request for watching stage summaries via streaming. @@ -632,17 +632,17 @@ message WatchStageSummariesRequest { // only events for Stages that request Freight originating from at least // one of the named Warehouses (directly or transitively via upstream // Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. - repeated string freightOrigins = 3; + repeated string freight_origins = 3; // resourceVersion is an optional Kubernetes ResourceVersion. When set, // the watch begins at the specified version, allowing clients to resume // from a prior list or watch without missing or duplicating events. - string resourceVersion = 4; + string resource_version = 4; } // WatchStageSummariesResponse contains stage summary change notifications. message WatchStageSummariesResponse { // stageSummary is the StageSummary for the Stage that changed. - optional StageSummary stageSummary = 1; + optional StageSummary stage_summary = 1; // type indicates the type of change (ADDED, MODIFIED, DELETED). string type = 2; } diff --git a/docs/docs/90-api-documentation.md b/docs/docs/90-api-documentation.md index 4577b89e25..de0f22c8a2 100644 --- a/docs/docs/90-api-documentation.md +++ b/docs/docs/90-api-documentation.md @@ -1186,7 +1186,7 @@ Stability is not guaranteed. | Field | Type | Description | | ----- | ---- | ----------- | | project | [string](#string) | project is the name of the project whose stage summaries should be listed. | -| freightOrigins | [string](#string) | freightOrigins is an optional list of Warehouse names. When non-empty, only Stages that request Freight originating from at least one of the named Warehouses (directly or transitively via upstream Stages) will be returned. Mirrors ListStagesRequest.freightOrigins. | +| freight_origins | [string](#string) | freightOrigins is an optional list of Warehouse names. When non-empty, only Stages that request Freight originating from at least one of the named Warehouses (directly or transitively via upstream Stages) will be returned. Mirrors ListStagesRequest.freightOrigins. | @@ -1194,8 +1194,8 @@ Stability is not guaranteed. ListStageSummariesResponse contains a list of stage summaries within a project. | Field | Type | Description | | ----- | ---- | ----------- | -| stageSummaries | [StageSummary](#akuity-io-kargo-service-v1alpha1-StageSummary) | stageSummaries is the list of StageSummary objects found in the project. | -| resourceVersion | [string](#string) | resourceVersion is the Kubernetes ResourceVersion of the underlying StageList. Clients may pass this value to WatchStageSummaries to begin watching from the exact point this list was taken, receiving only subsequent changes without redundant initial events. | +| stage_summaries | [StageSummary](#akuity-io-kargo-service-v1alpha1-StageSummary) | stageSummaries is the list of StageSummary objects found in the project. | +| resource_version | [string](#string) | resourceVersion is the Kubernetes ResourceVersion of the underlying StageList. Clients may pass this value to WatchStageSummaries to begin watching from the exact point this list was taken, receiving only subsequent changes without redundant initial events. | @@ -1366,9 +1366,9 @@ Stability is not guaranteed. | Field | Type | Description | | ----- | ---- | ----------- | | shard | [string](#string) | shard is the name of the shard that the Stage belongs to, mirroring StageSpec.shard. | -| requestedFreight | [github.com.akuity.kargo.api.v1alpha1.FreightRequest](#github-com-akuity-kargo-api-v1alpha1-FreightRequest) | requestedFreight mirrors StageSpec.requestedFreight. This is needed in full to render graph edges between Stages and their upstream sources. | -| promotionStepCount | [int32](#int32) | promotionStepCount is the number of promotion steps defined in the Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. Use GetStage to retrieve the full step configuration. | -| hasVerification | [bool](#bool) | hasVerification indicates whether the Stage defines a Verification. Use GetStage to retrieve the full Verification configuration. | +| requested_freight | [github.com.akuity.kargo.api.v1alpha1.FreightRequest](#github-com-akuity-kargo-api-v1alpha1-FreightRequest) | requestedFreight mirrors StageSpec.requestedFreight. This is needed in full to render graph edges between Stages and their upstream sources. | +| promotion_step_count | [int32](#int32) | promotionStepCount is the number of promotion steps defined in the Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. Use GetStage to retrieve the full step configuration. | +| has_verification | [bool](#bool) | hasVerification indicates whether the Stage defines a Verification. Use GetStage to retrieve the full Verification configuration. | @@ -1377,13 +1377,13 @@ Stability is not guaranteed. | Field | Type | Description | | ----- | ---- | ----------- | | conditions | k8s.io.apimachinery.pkg.apis.meta.v1.Condition | conditions mirrors StageStatus.conditions. | -| lastHandledRefresh | [string](#string) | lastHandledRefresh mirrors StageStatus.lastHandledRefresh. | -| currentFreight | [github.com.akuity.kargo.api.v1alpha1.FreightCollection](#github-com-akuity-kargo-api-v1alpha1-FreightCollection) | currentFreight is the FreightCollection currently deployed to the Stage (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has been deployed. Use GetStage to retrieve the full FreightHistory. | -| currentPromotion | [github.com.akuity.kargo.api.v1alpha1.PromotionReference](#github-com-akuity-kargo-api-v1alpha1-PromotionReference) | currentPromotion mirrors StageStatus.currentPromotion. | -| lastPromotion | [github.com.akuity.kargo.api.v1alpha1.PromotionReference](#github-com-akuity-kargo-api-v1alpha1-PromotionReference) | lastPromotion mirrors StageStatus.lastPromotion. | +| last_handled_refresh | [string](#string) | lastHandledRefresh mirrors StageStatus.lastHandledRefresh. | +| current_freight | [github.com.akuity.kargo.api.v1alpha1.FreightCollection](#github-com-akuity-kargo-api-v1alpha1-FreightCollection) | currentFreight is the FreightCollection currently deployed to the Stage (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has been deployed. Use GetStage to retrieve the full FreightHistory. | +| current_promotion | [github.com.akuity.kargo.api.v1alpha1.PromotionReference](#github-com-akuity-kargo-api-v1alpha1-PromotionReference) | currentPromotion mirrors StageStatus.currentPromotion. | +| last_promotion | [github.com.akuity.kargo.api.v1alpha1.PromotionReference](#github-com-akuity-kargo-api-v1alpha1-PromotionReference) | lastPromotion mirrors StageStatus.lastPromotion. | | health | [github.com.akuity.kargo.api.v1alpha1.Health](#github-com-akuity-kargo-api-v1alpha1-Health) | health mirrors StageStatus.health. | -| observedGeneration | [int64](#int64) | observedGeneration mirrors StageStatus.observedGeneration. | -| autoPromotionEnabled | [bool](#bool) | autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. | +| observed_generation | [int64](#int64) | observedGeneration mirrors StageStatus.observedGeneration. | +| auto_promotion_enabled | [bool](#bool) | autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. | @@ -1656,8 +1656,8 @@ Stability is not guaranteed. | ----- | ---- | ----------- | | project | [string](#string) | project is the name of the project whose stage summaries should be watched. | | name | [string](#string) | name is the name of a specific stage to watch, if empty all stages in the project are watched. | -| freightOrigins | [string](#string) | freightOrigins is an optional list of Warehouse names. When non-empty, only events for Stages that request Freight originating from at least one of the named Warehouses (directly or transitively via upstream Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. | -| resourceVersion | [string](#string) | resourceVersion is an optional Kubernetes ResourceVersion. When set, the watch begins at the specified version, allowing clients to resume from a prior list or watch without missing or duplicating events. | +| freight_origins | [string](#string) | freightOrigins is an optional list of Warehouse names. When non-empty, only events for Stages that request Freight originating from at least one of the named Warehouses (directly or transitively via upstream Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. | +| resource_version | [string](#string) | resourceVersion is an optional Kubernetes ResourceVersion. When set, the watch begins at the specified version, allowing clients to resume from a prior list or watch without missing or duplicating events. | @@ -1665,7 +1665,7 @@ Stability is not guaranteed. WatchStageSummariesResponse contains stage summary change notifications. | Field | Type | Description | | ----- | ---- | ----------- | -| stageSummary | [StageSummary](#akuity-io-kargo-service-v1alpha1-StageSummary) | stageSummary is the StageSummary for the Stage that changed. | +| stage_summary | [StageSummary](#akuity-io-kargo-service-v1alpha1-StageSummary) | stageSummary is the StageSummary for the Stage that changed. | | type | [string](#string) | type indicates the type of change (ADDED, MODIFIED, DELETED). | diff --git a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_list_stage_summaries_response.go b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_list_stage_summaries_response.go index c7bd6a0bef..5d06ba9273 100644 --- a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_list_stage_summaries_response.go +++ b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_list_stage_summaries_response.go @@ -21,10 +21,10 @@ type GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse struct { // StageList. Clients may pass this value to WatchStageSummaries to begin // watching from the exact point this list was taken, receiving only // subsequent changes without redundant initial events. - ResourceVersion string `json:"resourceVersion,omitempty"` + ResourceVersion string `json:"resource_version,omitempty"` // stageSummaries is the list of StageSummary objects found in the project. - StageSummaries []*GithubComAkuityKargoAPIServiceV1alpha1StageSummary `json:"stageSummaries"` + StageSummaries []*GithubComAkuityKargoAPIServiceV1alpha1StageSummary `json:"stage_summaries"` } // Validate validates this github com akuity kargo api service v1alpha1 list stage summaries response @@ -55,11 +55,11 @@ func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) valid if err := m.StageSummaries[i].Validate(formats); err != nil { ve := new(errors.Validation) if stderrors.As(err, &ve) { - return ve.ValidateName("stageSummaries" + "." + strconv.Itoa(i)) + return ve.ValidateName("stage_summaries" + "." + strconv.Itoa(i)) } ce := new(errors.CompositeError) if stderrors.As(err, &ce) { - return ce.ValidateName("stageSummaries" + "." + strconv.Itoa(i)) + return ce.ValidateName("stage_summaries" + "." + strconv.Itoa(i)) } return err @@ -98,11 +98,11 @@ func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) conte if err := m.StageSummaries[i].ContextValidate(ctx, formats); err != nil { ve := new(errors.Validation) if stderrors.As(err, &ve) { - return ve.ValidateName("stageSummaries" + "." + strconv.Itoa(i)) + return ve.ValidateName("stage_summaries" + "." + strconv.Itoa(i)) } ce := new(errors.CompositeError) if stderrors.As(err, &ce) { - return ce.ValidateName("stageSummaries" + "." + strconv.Itoa(i)) + return ce.ValidateName("stage_summaries" + "." + strconv.Itoa(i)) } return err diff --git a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_spec_summary.go b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_spec_summary.go index 4098726b3c..c1c660de44 100644 --- a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_spec_summary.go +++ b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_spec_summary.go @@ -19,16 +19,16 @@ type GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary struct { // hasVerification indicates whether the Stage defines a Verification. // Use GetStage to retrieve the full Verification configuration. - HasVerification bool `json:"hasVerification,omitempty"` + HasVerification bool `json:"has_verification,omitempty"` // promotionStepCount is the number of promotion steps defined in the // Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. // Use GetStage to retrieve the full step configuration. - PromotionStepCount int64 `json:"promotionStepCount,omitempty"` + PromotionStepCount int64 `json:"promotion_step_count,omitempty"` // requestedFreight mirrors StageSpec.requestedFreight. This is needed in // full to render graph edges between Stages and their upstream sources. - RequestedFreight []*FreightRequest `json:"requestedFreight"` + RequestedFreight []*FreightRequest `json:"requested_freight"` // shard is the name of the shard that the Stage belongs to, mirroring // StageSpec.shard. @@ -63,11 +63,11 @@ func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) validateRequest if err := m.RequestedFreight[i].Validate(formats); err != nil { ve := new(errors.Validation) if stderrors.As(err, &ve) { - return ve.ValidateName("requestedFreight" + "." + strconv.Itoa(i)) + return ve.ValidateName("requested_freight" + "." + strconv.Itoa(i)) } ce := new(errors.CompositeError) if stderrors.As(err, &ce) { - return ce.ValidateName("requestedFreight" + "." + strconv.Itoa(i)) + return ce.ValidateName("requested_freight" + "." + strconv.Itoa(i)) } return err @@ -106,11 +106,11 @@ func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) contextValidate if err := m.RequestedFreight[i].ContextValidate(ctx, formats); err != nil { ve := new(errors.Validation) if stderrors.As(err, &ve) { - return ve.ValidateName("requestedFreight" + "." + strconv.Itoa(i)) + return ve.ValidateName("requested_freight" + "." + strconv.Itoa(i)) } ce := new(errors.CompositeError) if stderrors.As(err, &ce) { - return ce.ValidateName("requestedFreight" + "." + strconv.Itoa(i)) + return ce.ValidateName("requested_freight" + "." + strconv.Itoa(i)) } return err diff --git a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_status_summary.go b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_status_summary.go index 90e7446065..72188aa118 100644 --- a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_status_summary.go +++ b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_status_summary.go @@ -18,7 +18,7 @@ import ( type GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary struct { // autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. - AutoPromotionEnabled bool `json:"autoPromotionEnabled,omitempty"` + AutoPromotionEnabled bool `json:"auto_promotion_enabled,omitempty"` // conditions mirrors StageStatus.conditions. Conditions []*V1Condition `json:"conditions"` @@ -28,12 +28,12 @@ type GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary struct { // been deployed. Use GetStage to retrieve the full FreightHistory. CurrentFreight struct { FreightCollection - } `json:"currentFreight,omitempty"` + } `json:"current_freight,omitempty"` // currentPromotion mirrors StageStatus.currentPromotion. CurrentPromotion struct { PromotionReference - } `json:"currentPromotion,omitempty"` + } `json:"current_promotion,omitempty"` // health mirrors StageStatus.health. Health struct { @@ -41,15 +41,15 @@ type GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary struct { } `json:"health,omitempty"` // lastHandledRefresh mirrors StageStatus.lastHandledRefresh. - LastHandledRefresh string `json:"lastHandledRefresh,omitempty"` + LastHandledRefresh string `json:"last_handled_refresh,omitempty"` // lastPromotion mirrors StageStatus.lastPromotion. LastPromotion struct { PromotionReference - } `json:"lastPromotion,omitempty"` + } `json:"last_promotion,omitempty"` // observedGeneration mirrors StageStatus.observedGeneration. - ObservedGeneration int64 `json:"observedGeneration,omitempty"` + ObservedGeneration int64 `json:"observed_generation,omitempty"` } // Validate validates this github com akuity kargo api service v1alpha1 stage status summary diff --git a/swagger.json b/swagger.json index 8ededfe7a4..dde998359d 100644 --- a/swagger.json +++ b/swagger.json @@ -5177,11 +5177,11 @@ "github_com_akuity_kargo_api_service_v1alpha1.ListStageSummariesResponse": { "type": "object", "properties": { - "resourceVersion": { + "resource_version": { "description": "resourceVersion is the Kubernetes ResourceVersion of the underlying\nStageList. Clients may pass this value to WatchStageSummaries to begin\nwatching from the exact point this list was taken, receiving only\nsubsequent changes without redundant initial events.", "type": "string" }, - "stageSummaries": { + "stage_summaries": { "description": "stageSummaries is the list of StageSummary objects found in the project.", "type": "array", "items": { @@ -5193,15 +5193,15 @@ "github_com_akuity_kargo_api_service_v1alpha1.StageSpecSummary": { "type": "object", "properties": { - "hasVerification": { + "has_verification": { "description": "hasVerification indicates whether the Stage defines a Verification.\nUse GetStage to retrieve the full Verification configuration.", "type": "boolean" }, - "promotionStepCount": { + "promotion_step_count": { "description": "promotionStepCount is the number of promotion steps defined in the\nStage's PromotionTemplate, or zero if no PromotionTemplate is defined.\nUse GetStage to retrieve the full step configuration.", "type": "integer" }, - "requestedFreight": { + "requested_freight": { "description": "requestedFreight mirrors StageSpec.requestedFreight. This is needed in\nfull to render graph edges between Stages and their upstream sources.", "type": "array", "items": { @@ -5217,7 +5217,7 @@ "github_com_akuity_kargo_api_service_v1alpha1.StageStatusSummary": { "type": "object", "properties": { - "autoPromotionEnabled": { + "auto_promotion_enabled": { "description": "autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled.", "type": "boolean" }, @@ -5228,7 +5228,7 @@ "$ref": "#/definitions/V1Condition" } }, - "currentFreight": { + "current_freight": { "description": "currentFreight is the FreightCollection currently deployed to the Stage\n(i.e. index 0 of StageStatus.freightHistory), or null if no Freight has\nbeen deployed. Use GetStage to retrieve the full FreightHistory.", "allOf": [ { @@ -5236,7 +5236,7 @@ } ] }, - "currentPromotion": { + "current_promotion": { "description": "currentPromotion mirrors StageStatus.currentPromotion.", "allOf": [ { @@ -5252,11 +5252,11 @@ } ] }, - "lastHandledRefresh": { + "last_handled_refresh": { "description": "lastHandledRefresh mirrors StageStatus.lastHandledRefresh.", "type": "string" }, - "lastPromotion": { + "last_promotion": { "description": "lastPromotion mirrors StageStatus.lastPromotion.", "allOf": [ { @@ -5264,7 +5264,7 @@ } ] }, - "observedGeneration": { + "observed_generation": { "description": "observedGeneration mirrors StageStatus.observedGeneration.", "type": "integer" } diff --git a/ui/src/gen/api/service/v1alpha1/service_pb.ts b/ui/src/gen/api/service/v1alpha1/service_pb.ts index aa7f9ff4a5..ca8a8cc230 100644 --- a/ui/src/gen/api/service/v1alpha1/service_pb.ts +++ b/ui/src/gen/api/service/v1alpha1/service_pb.ts @@ -22,7 +22,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file api/service/v1alpha1/service.proto. */ export const file_api_service_v1alpha1_service: GenFile = /*@__PURE__*/ - fileDesc("CiJhcGkvc2VydmljZS92MWFscGhhMS9zZXJ2aWNlLnByb3RvEiBha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMSKrAQoRQ29tcG9uZW50VmVyc2lvbnMSQgoGc2VydmVyGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm9IAIgBARI/CgNjbGkYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5WZXJzaW9uSW5mb0gBiAEBQgkKB19zZXJ2ZXJCBgoEX2NsaSKyAQoLVmVyc2lvbkluZm8SDwoHdmVyc2lvbhgBIAEoCRISCgpnaXRfY29tbWl0GAIgASgJEhYKDmdpdF90cmVlX2RpcnR5GAMgASgIEi4KCmJ1aWxkX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdvX3ZlcnNpb24YBSABKAkSEAoIY29tcGlsZXIYBiABKAkSEAoIcGxhdGZvcm0YByABKAkiFwoVR2V0VmVyc2lvbkluZm9SZXF1ZXN0Il0KFkdldFZlcnNpb25JbmZvUmVzcG9uc2USQwoMdmVyc2lvbl9pbmZvGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm8iEgoQR2V0Q29uZmlnUmVxdWVzdCItCgtBcmdvQ0RTaGFyZBILCgN1cmwYASABKAkSEQoJbmFtZXNwYWNlGAIgASgJIsgCChFHZXRDb25maWdSZXNwb25zZRJcCg1hcmdvY2Rfc2hhcmRzGAEgAygLMkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UuQXJnb2NkU2hhcmRzRW50cnkSIQoZc2VjcmV0X21hbmFnZW1lbnRfZW5hYmxlZBgCIAEoCBIiChpzeXN0ZW1fcmVzb3VyY2VzX25hbWVzcGFjZRgDIAEoCRIqCiJoYXNfYW5hbHlzaXNfcnVuX2xvZ3NfdXJsX3RlbXBsYXRlGAQgASgIGmIKEUFyZ29jZFNoYXJkc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFyZ29DRFNoYXJkOgI4ASIYChZHZXRQdWJsaWNDb25maWdSZXF1ZXN0Io4BChdHZXRQdWJsaWNDb25maWdSZXNwb25zZRJBCgtvaWRjX2NvbmZpZxgBIAEoCzIsLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLk9JRENDb25maWcSHQoVYWRtaW5fYWNjb3VudF9lbmFibGVkGAIgASgIEhEKCXNraXBfYXV0aBgDIAEoCCJaCgpPSURDQ29uZmlnEhIKCmlzc3Vlcl91cmwYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1jbGlfY2xpZW50X2lkGAQgASgJIiUKEUFkbWluTG9naW5SZXF1ZXN0EhAKCHBhc3N3b3JkGAEgASgJIiYKEkFkbWluTG9naW5SZXNwb25zZRIQCghpZF90b2tlbhgBIAEoCSIpChVDcmVhdGVSZXNvdXJjZVJlcXVlc3QSEAoIbWFuaWZlc3QYASABKAwiVgoUQ3JlYXRlUmVzb3VyY2VSZXN1bHQSIwoZY3JlYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgBIAEoDEgAEg8KBWVycm9yGAIgASgJSABCCAoGcmVzdWx0ImEKFkNyZWF0ZVJlc291cmNlUmVzcG9uc2USRwoHcmVzdWx0cxgBIAMoCzI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzdWx0IjEKHUNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIoMBChxDcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0EiMKGWNyZWF0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAIgASgMSAASDwoFZXJyb3IYAyABKAlIAEIICgZyZXN1bHQicQoeQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEk8KB3Jlc3VsdHMYASADKAsyPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0IikKFVVwZGF0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCJWChRVcGRhdGVSZXNvdXJjZVJlc3VsdBIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASDwoFZXJyb3IYAiABKAlIAEIICgZyZXN1bHQiYQoWVXBkYXRlUmVzb3VyY2VSZXNwb25zZRJHCgdyZXN1bHRzGAEgAygLMjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXN1bHQiKQoVRGVsZXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIlYKFERlbGV0ZVJlc291cmNlUmVzdWx0EiMKGWRlbGV0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIPCgVlcnJvchgCIAEoCUgAQggKBnJlc3VsdCJhChZEZWxldGVSZXNvdXJjZVJlc3BvbnNlEkcKB3Jlc3VsdHMYASADKAsyNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3VsdCIkChFMaXN0U3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIlEKEkxpc3RTdGFnZXNSZXNwb25zZRI7CgZzdGFnZXMYASADKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2UiJAoRTGlzdEltYWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSK/AQoSTGlzdEltYWdlc1Jlc3BvbnNlElAKBmltYWdlcxgCIAMoCzJALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RJbWFnZXNSZXNwb25zZS5JbWFnZXNFbnRyeRpXCgtJbWFnZXNFbnRyeRILCgNrZXkYASABKAkSNwoFdmFsdWUYAiABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5UYWdNYXA6AjgBIqgBCgZUYWdNYXASQAoEdGFncxgBIAMoCzIyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlRhZ01hcC5UYWdzRW50cnkaXAoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRI+CgV2YWx1ZRgCIAEoCzIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkltYWdlU3RhZ2VNYXA6AjgBIosBCg1JbWFnZVN0YWdlTWFwEksKBnN0YWdlcxgBIAMoCzI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkltYWdlU3RhZ2VNYXAuU3RhZ2VzRW50cnkaLQoLU3RhZ2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ASJtCg9HZXRTdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJpChBHZXRTdGFnZVJlc3BvbnNlEjwKBXN0YWdlGAEgASgLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0YWdlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjMKEldhdGNoU3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiXwoTV2F0Y2hTdGFnZXNSZXNwb25zZRI6CgVzdGFnZRgBIAEoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZRIMCgR0eXBlGAIgASgJIjMKEkRlbGV0ZVN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiFQoTRGVsZXRlU3RhZ2VSZXNwb25zZSKKAgoMU3RhZ2VTdW1tYXJ5EkcKCG1ldGFkYXRhGAEgASgLMjAuazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLk9iamVjdE1ldGFIAIgBARJFCgRzcGVjGAIgASgLMjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuU3RhZ2VTcGVjU3VtbWFyeUgBiAEBEkkKBnN0YXR1cxgDIAEoCzI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlN0YWdlU3RhdHVzU3VtbWFyeUgCiAEBQgsKCV9tZXRhZGF0YUIHCgVfc3BlY0IJCgdfc3RhdHVzIqYBChBTdGFnZVNwZWNTdW1tYXJ5Eg0KBXNoYXJkGAEgASgJEk4KEHJlcXVlc3RlZEZyZWlnaHQYAiADKAsyNC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodFJlcXVlc3QSGgoScHJvbW90aW9uU3RlcENvdW50GAMgASgFEhcKD2hhc1ZlcmlmaWNhdGlvbhgEIAEoCCK8BAoSU3RhZ2VTdGF0dXNTdW1tYXJ5EkMKCmNvbmRpdGlvbnMYASADKAsyLy5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuQ29uZGl0aW9uEhoKEmxhc3RIYW5kbGVkUmVmcmVzaBgCIAEoCRJUCg5jdXJyZW50RnJlaWdodBgDIAEoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0Q29sbGVjdGlvbkgAiAEBElcKEGN1cnJlbnRQcm9tb3Rpb24YBCABKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uUmVmZXJlbmNlSAGIAQESVAoNbGFzdFByb21vdGlvbhgFIAEoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25SZWZlcmVuY2VIAogBARJBCgZoZWFsdGgYBiABKAsyLC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuSGVhbHRoSAOIAQESGgoSb2JzZXJ2ZWRHZW5lcmF0aW9uGAcgASgDEhwKFGF1dG9Qcm9tb3Rpb25FbmFibGVkGAggASgIQhEKD19jdXJyZW50RnJlaWdodEITChFfY3VycmVudFByb21vdGlvbkIQCg5fbGFzdFByb21vdGlvbkIJCgdfaGVhbHRoIkQKGUxpc3RTdGFnZVN1bW1hcmllc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIWCg5mcmVpZ2h0T3JpZ2lucxgCIAMoCSJ9ChpMaXN0U3RhZ2VTdW1tYXJpZXNSZXNwb25zZRJGCg5zdGFnZVN1bW1hcmllcxgBIAMoCzIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlN0YWdlU3VtbWFyeRIXCg9yZXNvdXJjZVZlcnNpb24YAiABKAkibAoaV2F0Y2hTdGFnZVN1bW1hcmllc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhYKDmZyZWlnaHRPcmlnaW5zGAMgAygJEhcKD3Jlc291cmNlVmVyc2lvbhgEIAEoCSKHAQobV2F0Y2hTdGFnZVN1bW1hcmllc1Jlc3BvbnNlEkkKDHN0YWdlU3VtbWFyeRgBIAEoCzIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlN0YWdlU3VtbWFyeUgAiAEBEgwKBHR5cGUYAiABKAlCDwoNX3N0YWdlU3VtbWFyeSJWChdHZXRDbHVzdGVyQ29uZmlnUmVxdWVzdBI7CgZmb3JtYXQYASABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiggEKGEdldENsdXN0ZXJDb25maWdSZXNwb25zZRJNCg5jbHVzdGVyX2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyQ29uZmlnSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IhwKGkRlbGV0ZUNsdXN0ZXJDb25maWdSZXF1ZXN0Ih0KG0RlbGV0ZUNsdXN0ZXJDb25maWdSZXNwb25zZSIbChlXYXRjaENsdXN0ZXJDb25maWdSZXF1ZXN0IncKGldhdGNoQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlEksKDmNsdXN0ZXJfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJDb25maWcSDAoEdHlwZRgCIAEoCSJGChVMaXN0UHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJdChZMaXN0UHJvbW90aW9uc1Jlc3BvbnNlEkMKCnByb21vdGlvbnMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uIkcKFldhdGNoUHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJrChdXYXRjaFByb21vdGlvbnNSZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uEgwKBHR5cGUYAiABKAkicQoTR2V0UHJvbW90aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0InUKFEdldFByb21vdGlvblJlc3BvbnNlEkQKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25IABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNgoVV2F0Y2hQcm9tb3Rpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJqChZXYXRjaFByb21vdGlvblJlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24SDAoEdHlwZRgCIAEoCSI2ChVBYm9ydFByb21vdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhgKFkFib3J0UHJvbW90aW9uUmVzcG9uc2UiJAoURGVsZXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCSIXChVEZWxldGVQcm9qZWN0UmVzcG9uc2UiXgoRR2V0UHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRI7CgZmb3JtYXQYAiABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQibwoSR2V0UHJvamVjdFJlc3BvbnNlEkAKB3Byb2plY3QYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCKgAQoTTGlzdFByb2plY3RzUmVxdWVzdBIWCglwYWdlX3NpemUYASABKAVIAIgBARIRCgRwYWdlGAIgASgFSAGIAQESEwoGZmlsdGVyGAMgASgJSAKIAQESCwoDdWlkGAQgAygJEhEKBG1pbmUYBSABKAhIA4gBAUIMCgpfcGFnZV9zaXplQgcKBV9wYWdlQgkKB19maWx0ZXJCBwoFX21pbmUiZgoUTGlzdFByb2plY3RzUmVzcG9uc2USPwoIcHJvamVjdHMYASADKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdBINCgV0b3RhbBgCIAEoBSJnChdHZXRQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEjsKBmZvcm1hdBgCIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKCAQoYR2V0UHJvamVjdENvbmZpZ1Jlc3BvbnNlEk0KDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWdIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiLQoaRGVsZXRlUHJvamVjdENvbmZpZ1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSIdChtEZWxldGVQcm9qZWN0Q29uZmlnUmVzcG9uc2UiLAoZV2F0Y2hQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIncKGldhdGNoUHJvamVjdENvbmZpZ1Jlc3BvbnNlEksKDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWcSDAoEdHlwZRgCIAEoCSJUChVBcHByb3ZlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJEg0KBXN0YWdlGAQgASgJIhgKFkFwcHJvdmVGcmVpZ2h0UmVzcG9uc2UiRAoURGVsZXRlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJIhcKFURlbGV0ZUZyZWlnaHRSZXNwb25zZSJ+ChFHZXRGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWxpYXMYAyABKAkSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0Im8KEkdldEZyZWlnaHRSZXNwb25zZRJACgdmcmVpZ2h0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiJgoTV2F0Y2hGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJImQKFFdhdGNoRnJlaWdodFJlc3BvbnNlEj4KB2ZyZWlnaHQYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodBIMCgR0eXBlGAIgASgJIl8KFVByb21vdGVUb1N0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJEg8KB2ZyZWlnaHQYAyABKAkSFQoNZnJlaWdodF9hbGlhcxgEIAEoCSJcChZQcm9tb3RlVG9TdGFnZVJlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24iYgoYUHJvbW90ZURvd25zdHJlYW1SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkSDwoHZnJlaWdodBgDIAEoCRIVCg1mcmVpZ2h0X2FsaWFzGAQgASgJImAKGVByb21vdGVEb3duc3RyZWFtUmVzcG9uc2USQwoKcHJvbW90aW9ucxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24iigEKE1F1ZXJ5RnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCRIQCghncm91cF9ieRgDIAEoCRINCgVncm91cBgEIAEoCRIQCghvcmRlcl9ieRgFIAEoCRIPCgdyZXZlcnNlGAYgASgIEg8KB29yaWdpbnMYByADKAkiyAEKFFF1ZXJ5RnJlaWdodFJlc3BvbnNlElIKBmdyb3VwcxgBIAMoCzJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlc3BvbnNlLkdyb3Vwc0VudHJ5GlwKC0dyb3Vwc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkZyZWlnaHRMaXN0OgI4ASJNCgtGcmVpZ2h0TGlzdBI+CgdmcmVpZ2h0GAEgAygLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHQiYAoZVXBkYXRlRnJlaWdodEFsaWFzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEQoJb2xkX2FsaWFzGAMgASgJEhEKCW5ld19hbGlhcxgEIAEoCSIcChpVcGRhdGVGcmVpZ2h0QWxpYXNSZXNwb25zZSIxCg9SZXZlcmlmeVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCSISChBSZXZlcmlmeVJlc3BvbnNlIjoKGEFib3J0VmVyaWZpY2F0aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJIhsKGUFib3J0VmVyaWZpY2F0aW9uUmVzcG9uc2UiKAoVTGlzdFdhcmVob3VzZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiXQoWTGlzdFdhcmVob3VzZXNSZXNwb25zZRJDCgp3YXJlaG91c2VzGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZSJxChNHZXRXYXJlaG91c2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQidQoUR2V0V2FyZWhvdXNlUmVzcG9uc2USRAoJd2FyZWhvdXNlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI3ChZXYXRjaFdhcmVob3VzZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJrChdXYXRjaFdhcmVob3VzZXNSZXNwb25zZRJCCgl3YXJlaG91c2UYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlEgwKBHR5cGUYAiABKAkiNwoWRGVsZXRlV2FyZWhvdXNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiGQoXRGVsZXRlV2FyZWhvdXNlUmVzcG9uc2Ui9AEKFkNyZWF0ZUNvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRJQCgRkYXRhGAUgAygLMkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQ29uZmlnTWFwUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAYgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkwKF0NyZWF0ZUNvbmZpZ01hcFJlc3BvbnNlEjEKCmNvbmZpZ19tYXAYASABKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwIk0KFkRlbGV0ZUNvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCSIZChdEZWxldGVDb25maWdNYXBSZXNwb25zZSI+ChVMaXN0Q29uZmlnTWFwc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAIgASgIEg8KB3Byb2plY3QYASABKAkiTAoWTGlzdENvbmZpZ01hcHNSZXNwb25zZRIyCgtjb25maWdfbWFwcxgBIAMoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXAihwEKE0dldENvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAQgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiZAoUR2V0Q29uZmlnTWFwUmVzcG9uc2USMwoKY29uZmlnX21hcBgBIAEoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXBIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQi9AEKFlVwZGF0ZUNvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRJQCgRkYXRhGAUgAygLMkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAYgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkwKF1VwZGF0ZUNvbmZpZ01hcFJlc3BvbnNlEjEKCmNvbmZpZ19tYXAYASABKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwIsoBChxDcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIMCgR0eXBlGAMgASgJEhkKCHJlcG9fdXJsGAQgASgJUgdyZXBvVVJMEikKEXJlcG9fdXJsX2lzX3JlZ2V4GAUgASgIUg5yZXBvVVJMSXNSZWdleBIQCgh1c2VybmFtZRgGIAEoCRIQCghwYXNzd29yZBgHIAEoCSJQCh1DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiPQocRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiHwodRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2UidwoZR2V0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImgKGkdldFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEjEKC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCItChpMaXN0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIk4KG0xpc3RSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiygEKHFVwZGF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAggASgJEgwKBHR5cGUYAyABKAkSGQoIcmVwb191cmwYBCABKAlSB3JlcG9VUkwSKQoRcmVwb191cmxfaXNfcmVnZXgYBSABKAhSDnJlcG9VUkxJc1JlZ2V4EhAKCHVzZXJuYW1lGAYgASgJEhAKCHBhc3N3b3JkGAcgASgJIlAKHVVwZGF0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJGCh1MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAiABKAgSDwoHcHJvamVjdBgBIAEoCSJRCh5MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASADKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IoYCCh9DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgGIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSWQoEZGF0YRgEIAMoCzJLLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgFIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJTCiBDcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQihgIKH1VwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAYgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRJZCgRkYXRhGAQgAygLMksuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAUgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlMKIFVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJWCh9EZWxldGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgDIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiIgogRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2UiLwocTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIoIBCh1MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRJhChJhbmFseXNpc190ZW1wbGF0ZXMYASADKAsyRS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNUZW1wbGF0ZSJ4ChpHZXRBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IpoBChtHZXRBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USYgoRYW5hbHlzaXNfdGVtcGxhdGUYASABKAsyRS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNUZW1wbGF0ZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI+Ch1EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiIAoeRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlIiUKI0xpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0IrMBCiRMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USigEKGmNsdXN0ZXJfYW5hbHlzaXNfdGVtcGxhdGVzGAEgAygLMkwuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUhhjbHVzdGVyYW5hbHlzaXNUZW1wbGF0ZXMibgohR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0EgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IrABCiJHZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEnEKGWNsdXN0ZXJfYW5hbHlzaXNfdGVtcGxhdGUYASABKAsyTC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNAokRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0EgwKBG5hbWUYAiABKAkiJwolRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZSJ1ChVHZXRBbmFseXNpc1J1blJlcXVlc3QSEQoJbmFtZXNwYWNlGAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IosBChZHZXRBbmFseXNpc1J1blJlc3BvbnNlElgKDGFuYWx5c2lzX3J1bhgBIAEoCzJALmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5BbmFseXNpc1J1bkgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJpChlHZXRBbmFseXNpc1J1bkxvZ3NSZXF1ZXN0EhEKCW5hbWVzcGFjZRgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC21ldHJpY19uYW1lGAMgASgJEhYKDmNvbnRhaW5lcl9uYW1lGAQgASgJIisKGkdldEFuYWx5c2lzUnVuTG9nc1Jlc3BvbnNlEg0KBWNodW5rGAEgASgJIisKGExpc3RQcm9qZWN0RXZlbnRzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIkYKGUxpc3RQcm9qZWN0RXZlbnRzUmVzcG9uc2USKQoGZXZlbnRzGAEgAygLMhkuazhzLmlvLmFwaS5jb3JlLnYxLkV2ZW50IiwKGUxpc3RQcm9tb3Rpb25UYXNrc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJqChpMaXN0UHJvbW90aW9uVGFza3NSZXNwb25zZRJMCg9wcm9tb3Rpb25fdGFza3MYASADKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGFzayJ1ChdHZXRQcm9tb3Rpb25UYXNrUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IoIBChhHZXRQcm9tb3Rpb25UYXNrUmVzcG9uc2USTQoOcHJvbW90aW9uX3Rhc2sYASABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGFza0gAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCIiCiBMaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVxdWVzdCKAAQohTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlElsKF2NsdXN0ZXJfcHJvbW90aW9uX3Rhc2tzGAEgAygLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJQcm9tb3Rpb25UYXNrImsKHkdldENsdXN0ZXJQcm9tb3Rpb25UYXNrUmVxdWVzdBIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKmAQofR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXNwb25zZRJqCg5wcm9tb3Rpb25fdGFzaxgBIAEoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyUHJvbW90aW9uVGFza0gAUhRjbHVzdGVyUHJvbW90aW9uVGFzaxINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiUgoRQ3JlYXRlUm9sZVJlcXVlc3QSPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUwoSQ3JlYXRlUm9sZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIjIKEURlbGV0ZVJvbGVSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIUChJEZWxldGVSb2xlUmVzcG9uc2UimAEKDkdldFJvbGVSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgFIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSFAoMYXNfcmVzb3VyY2VzGAMgASgIEjsKBmZvcm1hdBgEIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCK6AQoPR2V0Um9sZVJlc3BvbnNlEj8KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlSAASTQoJcmVzb3VyY2VzGAIgASgLMjguZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZVJlc291cmNlc0gAEg0KA3JhdxgDIAEoDEgAQggKBnJlc3VsdCJKCgZDbGFpbXMSQAoGY2xhaW1zGAEgAygLMjAuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuQ2xhaW0i0QEKDEdyYW50UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBHJvbGUYAiABKAkSPwoLdXNlcl9jbGFpbXMYAyABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DbGFpbXNIABJWChByZXNvdXJjZV9kZXRhaWxzGAQgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUmVzb3VyY2VEZXRhaWxzSABCCQoHcmVxdWVzdCJOCg1HcmFudFJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIk8KEExpc3RSb2xlc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAMgASgIEg8KB3Byb2plY3QYASABKAkSFAoMYXNfcmVzb3VyY2VzGAIgASgIIqABChFMaXN0Um9sZXNSZXNwb25zZRI+CgVyb2xlcxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUSSwoJcmVzb3VyY2VzGAIgAygLMjguZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZVJlc291cmNlcyLSAQoNUmV2b2tlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBHJvbGUYAiABKAkSPwoLdXNlcl9jbGFpbXMYAyABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DbGFpbXNIABJWChByZXNvdXJjZV9kZXRhaWxzGAQgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUmVzb3VyY2VEZXRhaWxzSABCCQoHcmVxdWVzdCJPCg5SZXZva2VSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJSChFVcGRhdGVSb2xlUmVxdWVzdBI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJTChJVcGRhdGVSb2xlUmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiXwoVQ3JlYXRlQVBJVG9rZW5SZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEhEKCXJvbGVfbmFtZRgDIAEoCRIMCgRuYW1lGAQgASgJIkoKFkNyZWF0ZUFQSVRva2VuUmVzcG9uc2USMAoMdG9rZW5fc2VjcmV0GAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJMChVEZWxldGVBUElUb2tlblJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCSIYChZEZWxldGVBUElUb2tlblJlc3BvbnNlIoYBChJHZXRBUElUb2tlblJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCRI7CgZmb3JtYXQYBCABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiYgoTR2V0QVBJVG9rZW5SZXNwb25zZRIyCgx0b2tlbl9zZWNyZXQYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IlAKFExpc3RBUElUb2tlbnNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEhEKCXJvbGVfbmFtZRgDIAEoCSJKChVMaXN0QVBJVG9rZW5zUmVzcG9uc2USMQoNdG9rZW5fc2VjcmV0cxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiTgoWUmVmcmVzaFJlc291cmNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSFQoNcmVzb3VyY2VfdHlwZRgDIAEoCSJBChdSZWZyZXNoUmVzb3VyY2VSZXNwb25zZRImCghyZXNvdXJjZRgBIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkqUQoJUmF3Rm9ybWF0EhoKFlJBV19GT1JNQVRfVU5TUEVDSUZJRUQQABITCg9SQVdfRk9STUFUX0pTT04QARITCg9SQVdfRk9STUFUX1lBTUwQAjLTWAoMS2FyZ29TZXJ2aWNlEoMBCg5HZXRWZXJzaW9uSW5mbxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFZlcnNpb25JbmZvUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFZlcnNpb25JbmZvUmVzcG9uc2USdAoJR2V0Q29uZmlnEjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVxdWVzdBozLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ1Jlc3BvbnNlEoYBCg9HZXRQdWJsaWNDb25maWcSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQdWJsaWNDb25maWdSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHVibGljQ29uZmlnUmVzcG9uc2USdwoKQWRtaW5Mb2dpbhIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFkbWluTG9naW5SZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWRtaW5Mb2dpblJlc3BvbnNlEoMBCg5DcmVhdGVSZXNvdXJjZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzcG9uc2USmwEKFkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2USPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVxdWVzdBpALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXNwb25zZRKDAQoOVXBkYXRlUmVzb3VyY2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXNvdXJjZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXNvdXJjZVJlc3BvbnNlEoMBCg5EZWxldGVSZXNvdXJjZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlc291cmNlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlc291cmNlUmVzcG9uc2UShgEKD1JlZnJlc2hSZXNvdXJjZRI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJlZnJlc2hSZXNvdXJjZVJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZWZyZXNoUmVzb3VyY2VSZXNwb25zZRJ3CgpMaXN0U3RhZ2VzEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFN0YWdlc1JlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VzUmVzcG9uc2USjwEKEkxpc3RTdGFnZVN1bW1hcmllcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RTdGFnZVN1bW1hcmllc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VTdW1tYXJpZXNSZXNwb25zZRJ3CgpMaXN0SW1hZ2VzEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1JlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0SW1hZ2VzUmVzcG9uc2UScQoIR2V0U3RhZ2USMS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlcXVlc3QaMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlc3BvbnNlEnwKC1dhdGNoU3RhZ2VzEjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZXNSZXF1ZXN0GjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZXNSZXNwb25zZTABEpQBChNXYXRjaFN0YWdlU3VtbWFyaWVzEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZVN1bW1hcmllc1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFN0YWdlU3VtbWFyaWVzUmVzcG9uc2UwARJ6CgtEZWxldGVTdGFnZRI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVN0YWdlUmVxdWVzdBo1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVN0YWdlUmVzcG9uc2USiQEKEEdldENsdXN0ZXJDb25maWcSOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQ29uZmlnUmVxdWVzdBo6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENsdXN0ZXJDb25maWdSZXNwb25zZRKSAQoTRGVsZXRlQ2x1c3RlckNvbmZpZxI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJDb25maWdSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlEpEBChJXYXRjaENsdXN0ZXJDb25maWcSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaENsdXN0ZXJDb25maWdSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hDbHVzdGVyQ29uZmlnUmVzcG9uc2UwARKDAQoOTGlzdFByb21vdGlvbnMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uc1Jlc3BvbnNlEogBCg9XYXRjaFByb21vdGlvbnMSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb21vdGlvbnNSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25zUmVzcG9uc2UwARJ9CgxHZXRQcm9tb3Rpb24SNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25SZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uUmVzcG9uc2UShQEKDldhdGNoUHJvbW90aW9uEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25SZXNwb25zZTABEoMBCg5BYm9ydFByb21vdGlvbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0UHJvbW90aW9uUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0UHJvbW90aW9uUmVzcG9uc2USgAEKDURlbGV0ZVByb2plY3QSNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0UmVxdWVzdBo3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RSZXNwb25zZRJ3CgpHZXRQcm9qZWN0EjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdFJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9qZWN0UmVzcG9uc2USfQoMTGlzdFByb2plY3RzEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RzUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0c1Jlc3BvbnNlEokBChBHZXRQcm9qZWN0Q29uZmlnEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdENvbmZpZ1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9qZWN0Q29uZmlnUmVzcG9uc2USkgEKE0RlbGV0ZVByb2plY3RDb25maWcSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0Q29uZmlnUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RDb25maWdSZXNwb25zZRKRAQoSV2F0Y2hQcm9qZWN0Q29uZmlnEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9qZWN0Q29uZmlnUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvamVjdENvbmZpZ1Jlc3BvbnNlMAESgwEKDkFwcHJvdmVGcmVpZ2h0EjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQXBwcm92ZUZyZWlnaHRSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQXBwcm92ZUZyZWlnaHRSZXNwb25zZRKAAQoNRGVsZXRlRnJlaWdodBI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUZyZWlnaHRSZXF1ZXN0GjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlRnJlaWdodFJlc3BvbnNlEncKCkdldEZyZWlnaHQSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRGcmVpZ2h0UmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEZyZWlnaHRSZXNwb25zZRJ/CgxXYXRjaEZyZWlnaHQSNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaEZyZWlnaHRSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hGcmVpZ2h0UmVzcG9uc2UwARKDAQoOUHJvbW90ZVRvU3RhZ2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlVG9TdGFnZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlVG9TdGFnZVJlc3BvbnNlEowBChFQcm9tb3RlRG93bnN0cmVhbRI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVEb3duc3RyZWFtUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVEb3duc3RyZWFtUmVzcG9uc2USfQoMUXVlcnlGcmVpZ2h0EjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUXVlcnlGcmVpZ2h0UmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlc3BvbnNlEo8BChJVcGRhdGVGcmVpZ2h0QWxpYXMSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVGcmVpZ2h0QWxpYXNSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlRnJlaWdodEFsaWFzUmVzcG9uc2UScQoIUmV2ZXJpZnkSMS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZlcmlmeVJlcXVlc3QaMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZlcmlmeVJlc3BvbnNlEowBChFBYm9ydFZlcmlmaWNhdGlvbhI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0VmVyaWZpY2F0aW9uUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0VmVyaWZpY2F0aW9uUmVzcG9uc2USgwEKDkxpc3RXYXJlaG91c2VzEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFdhcmVob3VzZXNSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFdhcmVob3VzZXNSZXNwb25zZRJ9CgxHZXRXYXJlaG91c2USNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRXYXJlaG91c2VSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0V2FyZWhvdXNlUmVzcG9uc2USiAEKD1dhdGNoV2FyZWhvdXNlcxI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoV2FyZWhvdXNlc1JlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFdhcmVob3VzZXNSZXNwb25zZTABEoYBCg9EZWxldGVXYXJlaG91c2USOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVXYXJlaG91c2VSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlV2FyZWhvdXNlUmVzcG9uc2USmAEKFUNyZWF0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKYAQoVRGVsZXRlUmVwb0NyZWRlbnRpYWxzEj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEo8BChJHZXRSZXBvQ3JlZGVudGlhbHMSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USkgEKE0xpc3RSZXBvQ3JlZGVudGlhbHMSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKYAQoVVXBkYXRlUmVwb0NyZWRlbnRpYWxzEj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEpsBChZMaXN0R2VuZXJpY0NyZWRlbnRpYWxzEj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USoQEKGENyZWF0ZUdlbmVyaWNDcmVkZW50aWFscxJBLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRKhAQoYVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzEkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBpCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEqEBChhEZWxldGVHZW5lcmljQ3JlZGVudGlhbHMSQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2UShgEKD0NyZWF0ZUNvbmZpZ01hcBI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUNvbmZpZ01hcFJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVDb25maWdNYXBSZXNwb25zZRKGAQoPRGVsZXRlQ29uZmlnTWFwEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ29uZmlnTWFwUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNvbmZpZ01hcFJlc3BvbnNlEoMBCg5MaXN0Q29uZmlnTWFwcxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDb25maWdNYXBzUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDb25maWdNYXBzUmVzcG9uc2USfQoMR2V0Q29uZmlnTWFwEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnTWFwUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ01hcFJlc3BvbnNlEoYBCg9VcGRhdGVDb25maWdNYXASOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVDb25maWdNYXBSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVzcG9uc2USmAEKFUxpc3RBbmFseXNpc1RlbXBsYXRlcxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRKSAQoTR2V0QW5hbHlzaXNUZW1wbGF0ZRI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEpsBChZEZWxldGVBbmFseXNpc1RlbXBsYXRlEj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USrQEKHExpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXMSRS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdBpGLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRKnAQoaR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGUSQy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaRC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlErABCh1EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZRJGLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBpHLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USgwEKDkdldEFuYWx5c2lzUnVuEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5SZXNwb25zZRKRAQoSR2V0QW5hbHlzaXNSdW5Mb2dzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5Mb2dzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuTG9nc1Jlc3BvbnNlMAESjAEKEUxpc3RQcm9qZWN0RXZlbnRzEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RFdmVudHNSZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RFdmVudHNSZXNwb25zZRKPAQoSTGlzdFByb21vdGlvblRhc2tzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvblRhc2tzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEqQBChlMaXN0Q2x1c3RlclByb21vdGlvblRhc2tzEkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1JlcXVlc3QaQy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVzcG9uc2USiQEKEEdldFByb21vdGlvblRhc2sSOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25UYXNrUmVxdWVzdBo6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblRhc2tSZXNwb25zZRKeAQoXR2V0Q2x1c3RlclByb21vdGlvblRhc2sSQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyUHJvbW90aW9uVGFza1JlcXVlc3QaQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyUHJvbW90aW9uVGFza1Jlc3BvbnNlEncKCkNyZWF0ZVJvbGUSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSb2xlUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJvbGVSZXNwb25zZRJ3CgpEZWxldGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSb2xlUmVzcG9uc2USbgoHR2V0Um9sZRIwLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJvbGVSZXF1ZXN0GjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Um9sZVJlc3BvbnNlEmgKBUdyYW50Ei4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR3JhbnRSZXF1ZXN0Gi8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR3JhbnRSZXNwb25zZRJ0CglMaXN0Um9sZXMSMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Um9sZXNSZXF1ZXN0GjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJvbGVzUmVzcG9uc2USawoGUmV2b2tlEi8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2b2tlUmVxdWVzdBowLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldm9rZVJlc3BvbnNlEncKClVwZGF0ZVJvbGUSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSb2xlUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJvbGVSZXNwb25zZRKDAQoOQ3JlYXRlQVBJVG9rZW4SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVBUElUb2tlblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVBUElUb2tlblJlc3BvbnNlEoMBCg5EZWxldGVBUElUb2tlbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFQSVRva2VuUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFQSVRva2VuUmVzcG9uc2USegoLR2V0QVBJVG9rZW4SNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBUElUb2tlblJlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBUElUb2tlblJlc3BvbnNlEoABCg1MaXN0QVBJVG9rZW5zEjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFQSVRva2Vuc1JlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QVBJVG9rZW5zUmVzcG9uc2VCkwIKJGNvbS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMUIMU2VydmljZVByb3RvUAFaOGdpdGh1Yi5jb20vYWt1aXR5L2thcmdvL2FwaS9zZXJ2aWNlL3YxYWxwaGExO3N2Y3YxYWxwaGExogIEQUlLU6oCIEFrdWl0eS5Jby5LYXJnby5TZXJ2aWNlLlYxYWxwaGExygIgQWt1aXR5XElvXEthcmdvXFNlcnZpY2VcVjFhbHBoYTHiAixBa3VpdHlcSW9cS2FyZ29cU2VydmljZVxWMWFscGhhMVxHUEJNZXRhZGF0YeoCJEFrdWl0eTo6SW86OkthcmdvOjpTZXJ2aWNlOjpWMWFscGhhMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_api_v1alpha1_generated, file_k8s_io_api_core_v1_generated, file_k8s_io_apimachinery_pkg_apis_meta_v1_generated, file_api_stubs_rollouts_v1alpha1_generated, file_api_rbac_v1alpha1_generated, file_google_protobuf_any]); + fileDesc("CiJhcGkvc2VydmljZS92MWFscGhhMS9zZXJ2aWNlLnByb3RvEiBha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMSKrAQoRQ29tcG9uZW50VmVyc2lvbnMSQgoGc2VydmVyGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm9IAIgBARI/CgNjbGkYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5WZXJzaW9uSW5mb0gBiAEBQgkKB19zZXJ2ZXJCBgoEX2NsaSKyAQoLVmVyc2lvbkluZm8SDwoHdmVyc2lvbhgBIAEoCRISCgpnaXRfY29tbWl0GAIgASgJEhYKDmdpdF90cmVlX2RpcnR5GAMgASgIEi4KCmJ1aWxkX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdvX3ZlcnNpb24YBSABKAkSEAoIY29tcGlsZXIYBiABKAkSEAoIcGxhdGZvcm0YByABKAkiFwoVR2V0VmVyc2lvbkluZm9SZXF1ZXN0Il0KFkdldFZlcnNpb25JbmZvUmVzcG9uc2USQwoMdmVyc2lvbl9pbmZvGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm8iEgoQR2V0Q29uZmlnUmVxdWVzdCItCgtBcmdvQ0RTaGFyZBILCgN1cmwYASABKAkSEQoJbmFtZXNwYWNlGAIgASgJIsgCChFHZXRDb25maWdSZXNwb25zZRJcCg1hcmdvY2Rfc2hhcmRzGAEgAygLMkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UuQXJnb2NkU2hhcmRzRW50cnkSIQoZc2VjcmV0X21hbmFnZW1lbnRfZW5hYmxlZBgCIAEoCBIiChpzeXN0ZW1fcmVzb3VyY2VzX25hbWVzcGFjZRgDIAEoCRIqCiJoYXNfYW5hbHlzaXNfcnVuX2xvZ3NfdXJsX3RlbXBsYXRlGAQgASgIGmIKEUFyZ29jZFNoYXJkc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFyZ29DRFNoYXJkOgI4ASIYChZHZXRQdWJsaWNDb25maWdSZXF1ZXN0Io4BChdHZXRQdWJsaWNDb25maWdSZXNwb25zZRJBCgtvaWRjX2NvbmZpZxgBIAEoCzIsLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLk9JRENDb25maWcSHQoVYWRtaW5fYWNjb3VudF9lbmFibGVkGAIgASgIEhEKCXNraXBfYXV0aBgDIAEoCCJaCgpPSURDQ29uZmlnEhIKCmlzc3Vlcl91cmwYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1jbGlfY2xpZW50X2lkGAQgASgJIiUKEUFkbWluTG9naW5SZXF1ZXN0EhAKCHBhc3N3b3JkGAEgASgJIiYKEkFkbWluTG9naW5SZXNwb25zZRIQCghpZF90b2tlbhgBIAEoCSIpChVDcmVhdGVSZXNvdXJjZVJlcXVlc3QSEAoIbWFuaWZlc3QYASABKAwiVgoUQ3JlYXRlUmVzb3VyY2VSZXN1bHQSIwoZY3JlYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgBIAEoDEgAEg8KBWVycm9yGAIgASgJSABCCAoGcmVzdWx0ImEKFkNyZWF0ZVJlc291cmNlUmVzcG9uc2USRwoHcmVzdWx0cxgBIAMoCzI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzdWx0IjEKHUNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIoMBChxDcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0EiMKGWNyZWF0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAIgASgMSAASDwoFZXJyb3IYAyABKAlIAEIICgZyZXN1bHQicQoeQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEk8KB3Jlc3VsdHMYASADKAsyPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0IikKFVVwZGF0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCJWChRVcGRhdGVSZXNvdXJjZVJlc3VsdBIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASDwoFZXJyb3IYAiABKAlIAEIICgZyZXN1bHQiYQoWVXBkYXRlUmVzb3VyY2VSZXNwb25zZRJHCgdyZXN1bHRzGAEgAygLMjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXN1bHQiKQoVRGVsZXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIlYKFERlbGV0ZVJlc291cmNlUmVzdWx0EiMKGWRlbGV0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIPCgVlcnJvchgCIAEoCUgAQggKBnJlc3VsdCJhChZEZWxldGVSZXNvdXJjZVJlc3BvbnNlEkcKB3Jlc3VsdHMYASADKAsyNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3VsdCIkChFMaXN0U3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIlEKEkxpc3RTdGFnZXNSZXNwb25zZRI7CgZzdGFnZXMYASADKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2UiJAoRTGlzdEltYWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSK/AQoSTGlzdEltYWdlc1Jlc3BvbnNlElAKBmltYWdlcxgCIAMoCzJALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RJbWFnZXNSZXNwb25zZS5JbWFnZXNFbnRyeRpXCgtJbWFnZXNFbnRyeRILCgNrZXkYASABKAkSNwoFdmFsdWUYAiABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5UYWdNYXA6AjgBIqgBCgZUYWdNYXASQAoEdGFncxgBIAMoCzIyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlRhZ01hcC5UYWdzRW50cnkaXAoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRI+CgV2YWx1ZRgCIAEoCzIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkltYWdlU3RhZ2VNYXA6AjgBIosBCg1JbWFnZVN0YWdlTWFwEksKBnN0YWdlcxgBIAMoCzI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkltYWdlU3RhZ2VNYXAuU3RhZ2VzRW50cnkaLQoLU3RhZ2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ASJtCg9HZXRTdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJpChBHZXRTdGFnZVJlc3BvbnNlEjwKBXN0YWdlGAEgASgLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0YWdlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjMKEldhdGNoU3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiXwoTV2F0Y2hTdGFnZXNSZXNwb25zZRI6CgVzdGFnZRgBIAEoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZRIMCgR0eXBlGAIgASgJIjMKEkRlbGV0ZVN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiFQoTRGVsZXRlU3RhZ2VSZXNwb25zZSKKAgoMU3RhZ2VTdW1tYXJ5EkcKCG1ldGFkYXRhGAEgASgLMjAuazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLk9iamVjdE1ldGFIAIgBARJFCgRzcGVjGAIgASgLMjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuU3RhZ2VTcGVjU3VtbWFyeUgBiAEBEkkKBnN0YXR1cxgDIAEoCzI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlN0YWdlU3RhdHVzU3VtbWFyeUgCiAEBQgsKCV9tZXRhZGF0YUIHCgVfc3BlY0IJCgdfc3RhdHVzIqoBChBTdGFnZVNwZWNTdW1tYXJ5Eg0KBXNoYXJkGAEgASgJEk8KEXJlcXVlc3RlZF9mcmVpZ2h0GAIgAygLMjQuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRSZXF1ZXN0EhwKFHByb21vdGlvbl9zdGVwX2NvdW50GAMgASgFEhgKEGhhc192ZXJpZmljYXRpb24YBCABKAgixwQKElN0YWdlU3RhdHVzU3VtbWFyeRJDCgpjb25kaXRpb25zGAEgAygLMi8uazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLkNvbmRpdGlvbhIcChRsYXN0X2hhbmRsZWRfcmVmcmVzaBgCIAEoCRJVCg9jdXJyZW50X2ZyZWlnaHQYAyABKAsyNy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodENvbGxlY3Rpb25IAIgBARJYChFjdXJyZW50X3Byb21vdGlvbhgEIAEoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25SZWZlcmVuY2VIAYgBARJVCg5sYXN0X3Byb21vdGlvbhgFIAEoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25SZWZlcmVuY2VIAogBARJBCgZoZWFsdGgYBiABKAsyLC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuSGVhbHRoSAOIAQESGwoTb2JzZXJ2ZWRfZ2VuZXJhdGlvbhgHIAEoAxIeChZhdXRvX3Byb21vdGlvbl9lbmFibGVkGAggASgIQhIKEF9jdXJyZW50X2ZyZWlnaHRCFAoSX2N1cnJlbnRfcHJvbW90aW9uQhEKD19sYXN0X3Byb21vdGlvbkIJCgdfaGVhbHRoIkUKGUxpc3RTdGFnZVN1bW1hcmllc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIXCg9mcmVpZ2h0X29yaWdpbnMYAiADKAkifwoaTGlzdFN0YWdlU3VtbWFyaWVzUmVzcG9uc2USRwoPc3RhZ2Vfc3VtbWFyaWVzGAEgAygLMi4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuU3RhZ2VTdW1tYXJ5EhgKEHJlc291cmNlX3ZlcnNpb24YAiABKAkibgoaV2F0Y2hTdGFnZVN1bW1hcmllc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhcKD2ZyZWlnaHRfb3JpZ2lucxgDIAMoCRIYChByZXNvdXJjZV92ZXJzaW9uGAQgASgJIokBChtXYXRjaFN0YWdlU3VtbWFyaWVzUmVzcG9uc2USSgoNc3RhZ2Vfc3VtbWFyeRgBIAEoCzIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlN0YWdlU3VtbWFyeUgAiAEBEgwKBHR5cGUYAiABKAlCEAoOX3N0YWdlX3N1bW1hcnkiVgoXR2V0Q2x1c3RlckNvbmZpZ1JlcXVlc3QSOwoGZm9ybWF0GAEgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IoIBChhHZXRDbHVzdGVyQ29uZmlnUmVzcG9uc2USTQoOY2x1c3Rlcl9jb25maWcYASABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2x1c3RlckNvbmZpZ0gAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCIcChpEZWxldGVDbHVzdGVyQ29uZmlnUmVxdWVzdCIdChtEZWxldGVDbHVzdGVyQ29uZmlnUmVzcG9uc2UiGwoZV2F0Y2hDbHVzdGVyQ29uZmlnUmVxdWVzdCJ3ChpXYXRjaENsdXN0ZXJDb25maWdSZXNwb25zZRJLCg5jbHVzdGVyX2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyQ29uZmlnEgwKBHR5cGUYAiABKAkiRgoVTGlzdFByb21vdGlvbnNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSEgoFc3RhZ2UYAiABKAlIAIgBAUIICgZfc3RhZ2UiXQoWTGlzdFByb21vdGlvbnNSZXNwb25zZRJDCgpwcm9tb3Rpb25zGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbiJHChZXYXRjaFByb21vdGlvbnNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSEgoFc3RhZ2UYAiABKAlIAIgBAUIICgZfc3RhZ2UiawoXV2F0Y2hQcm9tb3Rpb25zUmVzcG9uc2USQgoJcHJvbW90aW9uGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbhIMCgR0eXBlGAIgASgJInEKE0dldFByb21vdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJ1ChRHZXRQcm9tb3Rpb25SZXNwb25zZRJECglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjYKFVdhdGNoUHJvbW90aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiagoWV2F0Y2hQcm9tb3Rpb25SZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uEgwKBHR5cGUYAiABKAkiNgoVQWJvcnRQcm9tb3Rpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIYChZBYm9ydFByb21vdGlvblJlc3BvbnNlIiQKFERlbGV0ZVByb2plY3RSZXF1ZXN0EgwKBG5hbWUYASABKAkiFwoVRGVsZXRlUHJvamVjdFJlc3BvbnNlIl4KEUdldFByb2plY3RSZXF1ZXN0EgwKBG5hbWUYASABKAkSOwoGZm9ybWF0GAIgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0Im8KEkdldFByb2plY3RSZXNwb25zZRJACgdwcm9qZWN0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQioAEKE0xpc3RQcm9qZWN0c1JlcXVlc3QSFgoJcGFnZV9zaXplGAEgASgFSACIAQESEQoEcGFnZRgCIAEoBUgBiAEBEhMKBmZpbHRlchgDIAEoCUgCiAEBEgsKA3VpZBgEIAMoCRIRCgRtaW5lGAUgASgISAOIAQFCDAoKX3BhZ2Vfc2l6ZUIHCgVfcGFnZUIJCgdfZmlsdGVyQgcKBV9taW5lImYKFExpc3RQcm9qZWN0c1Jlc3BvbnNlEj8KCHByb2plY3RzGAEgAygLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3QSDQoFdG90YWwYAiABKAUiZwoXR2V0UHJvamVjdENvbmZpZ1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRI7CgZmb3JtYXQYAiABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiggEKGEdldFByb2plY3RDb25maWdSZXNwb25zZRJNCg5wcm9qZWN0X2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9qZWN0Q29uZmlnSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0Ii0KGkRlbGV0ZVByb2plY3RDb25maWdSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiHQobRGVsZXRlUHJvamVjdENvbmZpZ1Jlc3BvbnNlIiwKGVdhdGNoUHJvamVjdENvbmZpZ1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJ3ChpXYXRjaFByb2plY3RDb25maWdSZXNwb25zZRJLCg5wcm9qZWN0X2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9qZWN0Q29uZmlnEgwKBHR5cGUYAiABKAkiVAoVQXBwcm92ZUZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRINCgVhbGlhcxgDIAEoCRINCgVzdGFnZRgEIAEoCSIYChZBcHByb3ZlRnJlaWdodFJlc3BvbnNlIkQKFERlbGV0ZUZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRINCgVhbGlhcxgDIAEoCSIXChVEZWxldGVGcmVpZ2h0UmVzcG9uc2UifgoRR2V0RnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJEjsKBmZvcm1hdBgEIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJvChJHZXRGcmVpZ2h0UmVzcG9uc2USQAoHZnJlaWdodBgBIAEoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IiYKE1dhdGNoRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJkChRXYXRjaEZyZWlnaHRSZXNwb25zZRI+CgdmcmVpZ2h0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHQSDAoEdHlwZRgCIAEoCSJfChVQcm9tb3RlVG9TdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCRIPCgdmcmVpZ2h0GAMgASgJEhUKDWZyZWlnaHRfYWxpYXMYBCABKAkiXAoWUHJvbW90ZVRvU3RhZ2VSZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uImIKGFByb21vdGVEb3duc3RyZWFtUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJEg8KB2ZyZWlnaHQYAyABKAkSFQoNZnJlaWdodF9hbGlhcxgEIAEoCSJgChlQcm9tb3RlRG93bnN0cmVhbVJlc3BvbnNlEkMKCnByb21vdGlvbnMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uIooBChNRdWVyeUZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkSEAoIZ3JvdXBfYnkYAyABKAkSDQoFZ3JvdXAYBCABKAkSEAoIb3JkZXJfYnkYBSABKAkSDwoHcmV2ZXJzZRgGIAEoCBIPCgdvcmlnaW5zGAcgAygJIsgBChRRdWVyeUZyZWlnaHRSZXNwb25zZRJSCgZncm91cHMYASADKAsyQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5RdWVyeUZyZWlnaHRSZXNwb25zZS5Hcm91cHNFbnRyeRpcCgtHcm91cHNFbnRyeRILCgNrZXkYASABKAkSPAoFdmFsdWUYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5GcmVpZ2h0TGlzdDoCOAEiTQoLRnJlaWdodExpc3QSPgoHZnJlaWdodBgBIAMoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0ImAKGVVwZGF0ZUZyZWlnaHRBbGlhc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCW9sZF9hbGlhcxgDIAEoCRIRCgluZXdfYWxpYXMYBCABKAkiHAoaVXBkYXRlRnJlaWdodEFsaWFzUmVzcG9uc2UiMQoPUmV2ZXJpZnlSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkiEgoQUmV2ZXJpZnlSZXNwb25zZSI6ChhBYm9ydFZlcmlmaWNhdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCSIbChlBYm9ydFZlcmlmaWNhdGlvblJlc3BvbnNlIigKFUxpc3RXYXJlaG91c2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIl0KFkxpc3RXYXJlaG91c2VzUmVzcG9uc2USQwoKd2FyZWhvdXNlcxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5XYXJlaG91c2UicQoTR2V0V2FyZWhvdXNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0InUKFEdldFdhcmVob3VzZVJlc3BvbnNlEkQKCXdhcmVob3VzZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5XYXJlaG91c2VIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNwoWV2F0Y2hXYXJlaG91c2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiawoXV2F0Y2hXYXJlaG91c2VzUmVzcG9uc2USQgoJd2FyZWhvdXNlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZRIMCgR0eXBlGAIgASgJIjcKFkRlbGV0ZVdhcmVob3VzZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhkKF0RlbGV0ZVdhcmVob3VzZVJlc3BvbnNlIvQBChZDcmVhdGVDb25maWdNYXBSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSUAoEZGF0YRgFIAMoCzJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUNvbmZpZ01hcFJlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgGIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJMChdDcmVhdGVDb25maWdNYXBSZXNwb25zZRIxCgpjb25maWdfbWFwGAEgASgLMh0uazhzLmlvLmFwaS5jb3JlLnYxLkNvbmZpZ01hcCJNChZEZWxldGVDb25maWdNYXBSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkiGQoXRGVsZXRlQ29uZmlnTWFwUmVzcG9uc2UiPgoVTGlzdENvbmZpZ01hcHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgCIAEoCBIPCgdwcm9qZWN0GAEgASgJIkwKFkxpc3RDb25maWdNYXBzUmVzcG9uc2USMgoLY29uZmlnX21hcHMYASADKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwIocBChNHZXRDb25maWdNYXBSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgEIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImQKFEdldENvbmZpZ01hcFJlc3BvbnNlEjMKCmNvbmZpZ19tYXAYASABKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IvQBChZVcGRhdGVDb25maWdNYXBSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSUAoEZGF0YRgFIAMoCzJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUNvbmZpZ01hcFJlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgGIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJMChdVcGRhdGVDb25maWdNYXBSZXNwb25zZRIxCgpjb25maWdfbWFwGAEgASgLMh0uazhzLmlvLmFwaS5jb3JlLnYxLkNvbmZpZ01hcCLKAQocQ3JlYXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YCCABKAkSDAoEdHlwZRgDIAEoCRIZCghyZXBvX3VybBgEIAEoCVIHcmVwb1VSTBIpChFyZXBvX3VybF9pc19yZWdleBgFIAEoCFIOcmVwb1VSTElzUmVnZXgSEAoIdXNlcm5hbWUYBiABKAkSEAoIcGFzc3dvcmQYByABKAkiUAodQ3JlYXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0Ij0KHERlbGV0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIh8KHURlbGV0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlIncKGUdldFJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJoChpHZXRSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIxCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiLQoaTGlzdFJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJOChtMaXN0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASADKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IsoBChxVcGRhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIMCgR0eXBlGAMgASgJEhkKCHJlcG9fdXJsGAQgASgJUgdyZXBvVVJMEikKEXJlcG9fdXJsX2lzX3JlZ2V4GAUgASgIUg5yZXBvVVJMSXNSZWdleBIQCgh1c2VybmFtZRgGIAEoCRIQCghwYXNzd29yZBgHIAEoCSJQCh1VcGRhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiRgodTGlzdEdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAIgASgIEg8KB3Byb2plY3QYASABKAkiUQoeTGlzdEdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgAygLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCKGAgofQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYBiABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJElkKBGRhdGEYBCADKAsySy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0LkRhdGFFbnRyeRIRCglyZXBsaWNhdGUYBSABKAgaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiUwogQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IoYCCh9VcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgGIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSWQoEZGF0YRgEIAMoCzJLLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgFIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJTCiBVcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiVgofRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAyABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIiIKIERlbGV0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlIi8KHExpc3RBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSKCAQodTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USYQoSYW5hbHlzaXNfdGVtcGxhdGVzGAEgAygLMkUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkFuYWx5c2lzVGVtcGxhdGUieAoaR2V0QW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKaAQobR2V0QW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEmIKEWFuYWx5c2lzX3RlbXBsYXRlGAEgASgLMkUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkFuYWx5c2lzVGVtcGxhdGVIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiPgodRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIiAKHkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZSIlCiNMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdCKzAQokTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1Jlc3BvbnNlEooBChpjbHVzdGVyX2FuYWx5c2lzX3RlbXBsYXRlcxgBIAMoCzJMLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5DbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVIYY2x1c3RlcmFuYWx5c2lzVGVtcGxhdGVzIm4KIUdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKwAQoiR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRJxChljbHVzdGVyX2FuYWx5c2lzX3RlbXBsYXRlGAEgASgLMkwuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjQKJERlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIMCgRuYW1lGAIgASgJIicKJURlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2UidQoVR2V0QW5hbHlzaXNSdW5SZXF1ZXN0EhEKCW5hbWVzcGFjZRgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKLAQoWR2V0QW5hbHlzaXNSdW5SZXNwb25zZRJYCgxhbmFseXNpc19ydW4YASABKAsyQC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNSdW5IABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiaQoZR2V0QW5hbHlzaXNSdW5Mb2dzUmVxdWVzdBIRCgluYW1lc3BhY2UYASABKAkSDAoEbmFtZRgCIAEoCRITCgttZXRyaWNfbmFtZRgDIAEoCRIWCg5jb250YWluZXJfbmFtZRgEIAEoCSIrChpHZXRBbmFseXNpc1J1bkxvZ3NSZXNwb25zZRINCgVjaHVuaxgBIAEoCSIrChhMaXN0UHJvamVjdEV2ZW50c1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJGChlMaXN0UHJvamVjdEV2ZW50c1Jlc3BvbnNlEikKBmV2ZW50cxgBIAMoCzIZLms4cy5pby5hcGkuY29yZS52MS5FdmVudCIsChlMaXN0UHJvbW90aW9uVGFza3NSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiagoaTGlzdFByb21vdGlvblRhc2tzUmVzcG9uc2USTAoPcHJvbW90aW9uX3Rhc2tzGAEgAygLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblRhc2sidQoXR2V0UHJvbW90aW9uVGFza1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKCAQoYR2V0UHJvbW90aW9uVGFza1Jlc3BvbnNlEk0KDnByb21vdGlvbl90YXNrGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblRhc2tIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiIgogTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1JlcXVlc3QigAEKIUxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXNwb25zZRJbChdjbHVzdGVyX3Byb21vdGlvbl90YXNrcxgBIAMoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyUHJvbW90aW9uVGFzayJrCh5HZXRDbHVzdGVyUHJvbW90aW9uVGFza1JlcXVlc3QSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQipgEKH0dldENsdXN0ZXJQcm9tb3Rpb25UYXNrUmVzcG9uc2USagoOcHJvbW90aW9uX3Rhc2sYASABKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2x1c3RlclByb21vdGlvblRhc2tIAFIUY2x1c3RlclByb21vdGlvblRhc2sSDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IlIKEUNyZWF0ZVJvbGVSZXF1ZXN0Ej0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIlMKEkNyZWF0ZVJvbGVSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSIyChFEZWxldGVSb2xlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiFAoSRGVsZXRlUm9sZVJlc3BvbnNlIpgBCg5HZXRSb2xlUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYBSABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhQKDGFzX3Jlc291cmNlcxgDIAEoCBI7CgZmb3JtYXQYBCABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiugEKD0dldFJvbGVSZXNwb25zZRI/CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZUgAEk0KCXJlc291cmNlcxgCIAEoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGVSZXNvdXJjZXNIABINCgNyYXcYAyABKAxIAEIICgZyZXN1bHQiSgoGQ2xhaW1zEkAKBmNsYWltcxgBIAMoCzIwLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLkNsYWltItEBCgxHcmFudFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRyb2xlGAIgASgJEj8KC3VzZXJfY2xhaW1zGAMgASgLMiguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ2xhaW1zSAASVgoQcmVzb3VyY2VfZGV0YWlscxgEIAEoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJlc291cmNlRGV0YWlsc0gAQgkKB3JlcXVlc3QiTgoNR3JhbnRSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJPChBMaXN0Um9sZXNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgDIAEoCBIPCgdwcm9qZWN0GAEgASgJEhQKDGFzX3Jlc291cmNlcxgCIAEoCCKgAQoRTGlzdFJvbGVzUmVzcG9uc2USPgoFcm9sZXMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlEksKCXJlc291cmNlcxgCIAMoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGVSZXNvdXJjZXMi0gEKDVJldm9rZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRyb2xlGAIgASgJEj8KC3VzZXJfY2xhaW1zGAMgASgLMiguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ2xhaW1zSAASVgoQcmVzb3VyY2VfZGV0YWlscxgEIAEoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJlc291cmNlRGV0YWlsc0gAQgkKB3JlcXVlc3QiTwoOUmV2b2tlUmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUgoRVXBkYXRlUm9sZVJlcXVlc3QSPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUwoSVXBkYXRlUm9sZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIl8KFUNyZWF0ZUFQSVRva2VuUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIRCglyb2xlX25hbWUYAyABKAkSDAoEbmFtZRgEIAEoCSJKChZDcmVhdGVBUElUb2tlblJlc3BvbnNlEjAKDHRva2VuX3NlY3JldBgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiTAoVRGVsZXRlQVBJVG9rZW5SZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkiGAoWRGVsZXRlQVBJVG9rZW5SZXNwb25zZSKGAQoSR2V0QVBJVG9rZW5SZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImIKE0dldEFQSVRva2VuUmVzcG9uc2USMgoMdG9rZW5fc2VjcmV0GAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJQChRMaXN0QVBJVG9rZW5zUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIRCglyb2xlX25hbWUYAyABKAkiSgoVTGlzdEFQSVRva2Vuc1Jlc3BvbnNlEjEKDXRva2VuX3NlY3JldHMYASADKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0Ik4KFlJlZnJlc2hSZXNvdXJjZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhUKDXJlc291cmNlX3R5cGUYAyABKAkiQQoXUmVmcmVzaFJlc291cmNlUmVzcG9uc2USJgoIcmVzb3VyY2UYASABKAsyFC5nb29nbGUucHJvdG9idWYuQW55KlEKCVJhd0Zvcm1hdBIaChZSQVdfRk9STUFUX1VOU1BFQ0lGSUVEEAASEwoPUkFXX0ZPUk1BVF9KU09OEAESEwoPUkFXX0ZPUk1BVF9ZQU1MEAIy01gKDEthcmdvU2VydmljZRKDAQoOR2V0VmVyc2lvbkluZm8SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRWZXJzaW9uSW5mb1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlEnQKCUdldENvbmZpZxIyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ1JlcXVlc3QaMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdSZXNwb25zZRKGAQoPR2V0UHVibGljQ29uZmlnEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHVibGljQ29uZmlnUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFB1YmxpY0NvbmZpZ1Jlc3BvbnNlEncKCkFkbWluTG9naW4SMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BZG1pbkxvZ2luUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFkbWluTG9naW5SZXNwb25zZRKDAQoOQ3JlYXRlUmVzb3VyY2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXNvdXJjZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXNvdXJjZVJlc3BvbnNlEpsBChZDcmVhdGVPclVwZGF0ZVJlc291cmNlEj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlcXVlc3QaQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzcG9uc2USgwEKDlVwZGF0ZVJlc291cmNlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXNwb25zZRKDAQoORGVsZXRlUmVzb3VyY2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3BvbnNlEoYBCg9SZWZyZXNoUmVzb3VyY2USOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZWZyZXNoUmVzb3VyY2VSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmVmcmVzaFJlc291cmNlUmVzcG9uc2USdwoKTGlzdFN0YWdlcxIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RTdGFnZXNSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFN0YWdlc1Jlc3BvbnNlEo8BChJMaXN0U3RhZ2VTdW1tYXJpZXMSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VTdW1tYXJpZXNSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFN0YWdlU3VtbWFyaWVzUmVzcG9uc2USdwoKTGlzdEltYWdlcxIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RJbWFnZXNSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1Jlc3BvbnNlEnEKCEdldFN0YWdlEjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VSZXF1ZXN0GjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VSZXNwb25zZRJ8CgtXYXRjaFN0YWdlcxI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoU3RhZ2VzUmVxdWVzdBo1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoU3RhZ2VzUmVzcG9uc2UwARKUAQoTV2F0Y2hTdGFnZVN1bW1hcmllcxI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoU3RhZ2VTdW1tYXJpZXNSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZVN1bW1hcmllc1Jlc3BvbnNlMAESegoLRGVsZXRlU3RhZ2USNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVTdGFnZVJlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVTdGFnZVJlc3BvbnNlEokBChBHZXRDbHVzdGVyQ29uZmlnEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckNvbmZpZ1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQ29uZmlnUmVzcG9uc2USkgEKE0RlbGV0ZUNsdXN0ZXJDb25maWcSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQ29uZmlnUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJDb25maWdSZXNwb25zZRKRAQoSV2F0Y2hDbHVzdGVyQ29uZmlnEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hDbHVzdGVyQ29uZmlnUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlMAESgwEKDkxpc3RQcm9tb3Rpb25zEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvbnNSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvbnNSZXNwb25zZRKIAQoPV2F0Y2hQcm9tb3Rpb25zEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25zUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uc1Jlc3BvbnNlMAESfQoMR2V0UHJvbW90aW9uEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblJlc3BvbnNlEoUBCg5XYXRjaFByb21vdGlvbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uUmVzcG9uc2UwARKDAQoOQWJvcnRQcm9tb3Rpb24SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFByb21vdGlvblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFByb21vdGlvblJlc3BvbnNlEoABCg1EZWxldGVQcm9qZWN0EjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdFJlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0UmVzcG9uc2USdwoKR2V0UHJvamVjdBIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdFJlc3BvbnNlEn0KDExpc3RQcm9qZWN0cxI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0c1JlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvamVjdHNSZXNwb25zZRKJAQoQR2V0UHJvamVjdENvbmZpZxI5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RDb25maWdSZXF1ZXN0GjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdENvbmZpZ1Jlc3BvbnNlEpIBChNEZWxldGVQcm9qZWN0Q29uZmlnEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdENvbmZpZ1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0Q29uZmlnUmVzcG9uc2USkQEKEldhdGNoUHJvamVjdENvbmZpZxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvamVjdENvbmZpZ1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb2plY3RDb25maWdSZXNwb25zZTABEoMBCg5BcHByb3ZlRnJlaWdodBI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFwcHJvdmVGcmVpZ2h0UmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFwcHJvdmVGcmVpZ2h0UmVzcG9uc2USgAEKDURlbGV0ZUZyZWlnaHQSNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVGcmVpZ2h0UmVxdWVzdBo3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUZyZWlnaHRSZXNwb25zZRJ3CgpHZXRGcmVpZ2h0EjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0RnJlaWdodFJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRGcmVpZ2h0UmVzcG9uc2USfwoMV2F0Y2hGcmVpZ2h0EjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hGcmVpZ2h0UmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoRnJlaWdodFJlc3BvbnNlMAESgwEKDlByb21vdGVUb1N0YWdlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZVRvU3RhZ2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZVRvU3RhZ2VSZXNwb25zZRKMAQoRUHJvbW90ZURvd25zdHJlYW0SOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlRG93bnN0cmVhbVJlcXVlc3QaOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlRG93bnN0cmVhbVJlc3BvbnNlEn0KDFF1ZXJ5RnJlaWdodBI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5RdWVyeUZyZWlnaHRSZXNwb25zZRKPAQoSVXBkYXRlRnJlaWdodEFsaWFzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlRnJlaWdodEFsaWFzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUZyZWlnaHRBbGlhc1Jlc3BvbnNlEnEKCFJldmVyaWZ5EjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2ZXJpZnlSZXF1ZXN0GjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2ZXJpZnlSZXNwb25zZRKMAQoRQWJvcnRWZXJpZmljYXRpb24SOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFZlcmlmaWNhdGlvblJlcXVlc3QaOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFZlcmlmaWNhdGlvblJlc3BvbnNlEoMBCg5MaXN0V2FyZWhvdXNlcxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RXYXJlaG91c2VzUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RXYXJlaG91c2VzUmVzcG9uc2USfQoMR2V0V2FyZWhvdXNlEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0V2FyZWhvdXNlUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFdhcmVob3VzZVJlc3BvbnNlEogBCg9XYXRjaFdhcmVob3VzZXMSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFdhcmVob3VzZXNSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hXYXJlaG91c2VzUmVzcG9uc2UwARKGAQoPRGVsZXRlV2FyZWhvdXNlEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlV2FyZWhvdXNlUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVdhcmVob3VzZVJlc3BvbnNlEpgBChVDcmVhdGVSZXBvQ3JlZGVudGlhbHMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USmAEKFURlbGV0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKPAQoSR2V0UmVwb0NyZWRlbnRpYWxzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEpIBChNMaXN0UmVwb0NyZWRlbnRpYWxzEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USmAEKFVVwZGF0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKbAQoWTGlzdEdlbmVyaWNDcmVkZW50aWFscxI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEqEBChhDcmVhdGVHZW5lcmljQ3JlZGVudGlhbHMSQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USoQEKGFVwZGF0ZUdlbmVyaWNDcmVkZW50aWFscxJBLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRKhAQoYRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzEkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBpCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEoYBCg9DcmVhdGVDb25maWdNYXASOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVDb25maWdNYXBSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQ29uZmlnTWFwUmVzcG9uc2UShgEKD0RlbGV0ZUNvbmZpZ01hcBI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNvbmZpZ01hcFJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDb25maWdNYXBSZXNwb25zZRKDAQoOTGlzdENvbmZpZ01hcHMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q29uZmlnTWFwc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q29uZmlnTWFwc1Jlc3BvbnNlEn0KDEdldENvbmZpZ01hcBI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ01hcFJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdNYXBSZXNwb25zZRKGAQoPVXBkYXRlQ29uZmlnTWFwEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUNvbmZpZ01hcFJlc3BvbnNlEpgBChVMaXN0QW5hbHlzaXNUZW1wbGF0ZXMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USkgEKE0dldEFuYWx5c2lzVGVtcGxhdGUSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKbAQoWRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZRI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEq0BChxMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzEkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QaRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USpwEKGkdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlEkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKwAQodRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGUSRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaRy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEoMBCg5HZXRBbmFseXNpc1J1bhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVzcG9uc2USkQEKEkdldEFuYWx5c2lzUnVuTG9ncxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuTG9nc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1J1bkxvZ3NSZXNwb25zZTABEowBChFMaXN0UHJvamVjdEV2ZW50cxI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVzcG9uc2USjwEKEkxpc3RQcm9tb3Rpb25UYXNrcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25UYXNrc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uVGFza3NSZXNwb25zZRKkAQoZTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrcxJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXF1ZXN0GkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEokBChBHZXRQcm9tb3Rpb25UYXNrEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uVGFza1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25UYXNrUmVzcG9uc2USngEKF0dldENsdXN0ZXJQcm9tb3Rpb25UYXNrEkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXF1ZXN0GkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXNwb25zZRJ3CgpDcmVhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSb2xlUmVzcG9uc2USdwoKRGVsZXRlUm9sZRIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJvbGVSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUm9sZVJlc3BvbnNlEm4KB0dldFJvbGUSMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSb2xlUmVxdWVzdBoxLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJvbGVSZXNwb25zZRJoCgVHcmFudBIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVxdWVzdBovLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVzcG9uc2USdAoJTGlzdFJvbGVzEjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJvbGVzUmVxdWVzdBozLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSb2xlc1Jlc3BvbnNlEmsKBlJldm9rZRIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldm9rZVJlcXVlc3QaMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZva2VSZXNwb25zZRJ3CgpVcGRhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSb2xlUmVzcG9uc2USgwEKDkNyZWF0ZUFQSVRva2VuEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQVBJVG9rZW5SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQVBJVG9rZW5SZXNwb25zZRKDAQoORGVsZXRlQVBJVG9rZW4SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBUElUb2tlblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBUElUb2tlblJlc3BvbnNlEnoKC0dldEFQSVRva2VuEjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QVBJVG9rZW5SZXF1ZXN0GjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QVBJVG9rZW5SZXNwb25zZRKAAQoNTGlzdEFQSVRva2VucxI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RBUElUb2tlbnNSZXF1ZXN0GjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFQSVRva2Vuc1Jlc3BvbnNlQpMCCiRjb20uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTFCDFNlcnZpY2VQcm90b1ABWjhnaXRodWIuY29tL2FrdWl0eS9rYXJnby9hcGkvc2VydmljZS92MWFscGhhMTtzdmN2MWFscGhhMaICBEFJS1OqAiBBa3VpdHkuSW8uS2FyZ28uU2VydmljZS5WMWFscGhhMcoCIEFrdWl0eVxJb1xLYXJnb1xTZXJ2aWNlXFYxYWxwaGEx4gIsQWt1aXR5XElvXEthcmdvXFNlcnZpY2VcVjFhbHBoYTFcR1BCTWV0YWRhdGHqAiRBa3VpdHk6OklvOjpLYXJnbzo6U2VydmljZTo6VjFhbHBoYTFiBnByb3RvMw", [file_google_protobuf_timestamp, file_api_v1alpha1_generated, file_k8s_io_api_core_v1_generated, file_k8s_io_apimachinery_pkg_apis_meta_v1_generated, file_api_stubs_rollouts_v1alpha1_generated, file_api_rbac_v1alpha1_generated, file_google_protobuf_any]); /** * ComponentVersions contains version information for different Kargo components. @@ -1041,7 +1041,7 @@ export type StageSpecSummary = Message<"akuity.io.kargo.service.v1alpha1.StageSp * requestedFreight mirrors StageSpec.requestedFreight. This is needed in * full to render graph edges between Stages and their upstream sources. * - * @generated from field: repeated github.com.akuity.kargo.api.v1alpha1.FreightRequest requestedFreight = 2; + * @generated from field: repeated github.com.akuity.kargo.api.v1alpha1.FreightRequest requested_freight = 2; */ requestedFreight: FreightRequest[]; @@ -1050,7 +1050,7 @@ export type StageSpecSummary = Message<"akuity.io.kargo.service.v1alpha1.StageSp * Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. * Use GetStage to retrieve the full step configuration. * - * @generated from field: int32 promotionStepCount = 3; + * @generated from field: int32 promotion_step_count = 3; */ promotionStepCount: number; @@ -1058,7 +1058,7 @@ export type StageSpecSummary = Message<"akuity.io.kargo.service.v1alpha1.StageSp * hasVerification indicates whether the Stage defines a Verification. * Use GetStage to retrieve the full Verification configuration. * - * @generated from field: bool hasVerification = 4; + * @generated from field: bool has_verification = 4; */ hasVerification: boolean; }; @@ -1087,7 +1087,7 @@ export type StageStatusSummary = Message<"akuity.io.kargo.service.v1alpha1.Stage /** * lastHandledRefresh mirrors StageStatus.lastHandledRefresh. * - * @generated from field: string lastHandledRefresh = 2; + * @generated from field: string last_handled_refresh = 2; */ lastHandledRefresh: string; @@ -1096,21 +1096,21 @@ export type StageStatusSummary = Message<"akuity.io.kargo.service.v1alpha1.Stage * (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has * been deployed. Use GetStage to retrieve the full FreightHistory. * - * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.FreightCollection currentFreight = 3; + * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.FreightCollection current_freight = 3; */ currentFreight?: FreightCollection; /** * currentPromotion mirrors StageStatus.currentPromotion. * - * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.PromotionReference currentPromotion = 4; + * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.PromotionReference current_promotion = 4; */ currentPromotion?: PromotionReference; /** * lastPromotion mirrors StageStatus.lastPromotion. * - * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.PromotionReference lastPromotion = 5; + * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.PromotionReference last_promotion = 5; */ lastPromotion?: PromotionReference; @@ -1124,14 +1124,14 @@ export type StageStatusSummary = Message<"akuity.io.kargo.service.v1alpha1.Stage /** * observedGeneration mirrors StageStatus.observedGeneration. * - * @generated from field: int64 observedGeneration = 7; + * @generated from field: int64 observed_generation = 7; */ observedGeneration: bigint; /** * autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. * - * @generated from field: bool autoPromotionEnabled = 8; + * @generated from field: bool auto_promotion_enabled = 8; */ autoPromotionEnabled: boolean; }; @@ -1163,7 +1163,7 @@ export type ListStageSummariesRequest = Message<"akuity.io.kargo.service.v1alpha * named Warehouses (directly or transitively via upstream Stages) will be * returned. Mirrors ListStagesRequest.freightOrigins. * - * @generated from field: repeated string freightOrigins = 2; + * @generated from field: repeated string freight_origins = 2; */ freightOrigins: string[]; }; @@ -1184,7 +1184,7 @@ export type ListStageSummariesResponse = Message<"akuity.io.kargo.service.v1alph /** * stageSummaries is the list of StageSummary objects found in the project. * - * @generated from field: repeated akuity.io.kargo.service.v1alpha1.StageSummary stageSummaries = 1; + * @generated from field: repeated akuity.io.kargo.service.v1alpha1.StageSummary stage_summaries = 1; */ stageSummaries: StageSummary[]; @@ -1194,7 +1194,7 @@ export type ListStageSummariesResponse = Message<"akuity.io.kargo.service.v1alph * watching from the exact point this list was taken, receiving only * subsequent changes without redundant initial events. * - * @generated from field: string resourceVersion = 2; + * @generated from field: string resource_version = 2; */ resourceVersion: string; }; @@ -1232,7 +1232,7 @@ export type WatchStageSummariesRequest = Message<"akuity.io.kargo.service.v1alph * one of the named Warehouses (directly or transitively via upstream * Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. * - * @generated from field: repeated string freightOrigins = 3; + * @generated from field: repeated string freight_origins = 3; */ freightOrigins: string[]; @@ -1241,7 +1241,7 @@ export type WatchStageSummariesRequest = Message<"akuity.io.kargo.service.v1alph * the watch begins at the specified version, allowing clients to resume * from a prior list or watch without missing or duplicating events. * - * @generated from field: string resourceVersion = 4; + * @generated from field: string resource_version = 4; */ resourceVersion: string; }; @@ -1262,7 +1262,7 @@ export type WatchStageSummariesResponse = Message<"akuity.io.kargo.service.v1alp /** * stageSummary is the StageSummary for the Stage that changed. * - * @generated from field: optional akuity.io.kargo.service.v1alpha1.StageSummary stageSummary = 1; + * @generated from field: optional akuity.io.kargo.service.v1alpha1.StageSummary stage_summary = 1; */ stageSummary?: StageSummary; diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse.ts index 56d00f9ffc..2ee4a9ee44 100644 --- a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse.ts +++ b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse.ts @@ -12,7 +12,7 @@ export interface GithubComAkuityKargoApiServiceV1alpha1ListStageSummariesRespons StageList. Clients may pass this value to WatchStageSummaries to begin watching from the exact point this list was taken, receiving only subsequent changes without redundant initial events. */ - resourceVersion?: string; + resource_version?: string; /** stageSummaries is the list of StageSummary objects found in the project. */ - stageSummaries?: GithubComAkuityKargoApiServiceV1alpha1StageSummary[]; + stage_summaries?: GithubComAkuityKargoApiServiceV1alpha1StageSummary[]; } diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSpecSummary.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSpecSummary.ts index 147c923b2a..e58dfeeb02 100644 --- a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSpecSummary.ts +++ b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSpecSummary.ts @@ -10,14 +10,14 @@ import type { FreightRequest } from './freightRequest'; export interface GithubComAkuityKargoApiServiceV1alpha1StageSpecSummary { /** hasVerification indicates whether the Stage defines a Verification. Use GetStage to retrieve the full Verification configuration. */ - hasVerification?: boolean; + has_verification?: boolean; /** promotionStepCount is the number of promotion steps defined in the Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. Use GetStage to retrieve the full step configuration. */ - promotionStepCount?: number; + promotion_step_count?: number; /** requestedFreight mirrors StageSpec.requestedFreight. This is needed in full to render graph edges between Stages and their upstream sources. */ - requestedFreight?: FreightRequest[]; + requested_freight?: FreightRequest[]; /** shard is the name of the shard that the Stage belongs to, mirroring StageSpec.shard. */ shard?: string; diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageStatusSummary.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageStatusSummary.ts index da362ec9c6..f5517cd9c2 100644 --- a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageStatusSummary.ts +++ b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageStatusSummary.ts @@ -12,21 +12,21 @@ import type { Health } from './health'; export interface GithubComAkuityKargoApiServiceV1alpha1StageStatusSummary { /** autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. */ - autoPromotionEnabled?: boolean; + auto_promotion_enabled?: boolean; /** conditions mirrors StageStatus.conditions. */ conditions?: V1Condition[]; /** currentFreight is the FreightCollection currently deployed to the Stage (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has been deployed. Use GetStage to retrieve the full FreightHistory. */ - currentFreight?: FreightCollection; + current_freight?: FreightCollection; /** currentPromotion mirrors StageStatus.currentPromotion. */ - currentPromotion?: PromotionReference; + current_promotion?: PromotionReference; /** health mirrors StageStatus.health. */ health?: Health; /** lastHandledRefresh mirrors StageStatus.lastHandledRefresh. */ - lastHandledRefresh?: string; + last_handled_refresh?: string; /** lastPromotion mirrors StageStatus.lastPromotion. */ - lastPromotion?: PromotionReference; + last_promotion?: PromotionReference; /** observedGeneration mirrors StageStatus.observedGeneration. */ - observedGeneration?: number; + observed_generation?: number; } From 7f4b0339f376d902ee7f4d101541ea13939c97ca Mon Sep 17 00:00:00 2001 From: Jacob Boykin Date: Thu, 23 Apr 2026 22:58:44 -0400 Subject: [PATCH 3/7] feat(api): add GetStageHealthOutputs RPC; omit health.output from StageSummary Adds a batch RPC that returns the raw health output blob for a specified set of Stages in a project, and updates stageToSummary to always leave Status.Health.Output nil in the summary response. Intended for clients that use ListStageSummaries for the stage list and want to resolve per-argocd-app health only for the Stages currently in viewport (React Flow virtualizes to ~10-30 visible nodes at a time). The raw health output is typically ~2 KB per Stage and is the single largest remaining field in StageSummary. Moving it behind a lazy fetch drops the summary to roughly 1-2 KB per stage, reducing both wire transfer and the heap footprint of the cached list. The new endpoint is available in ConnectRPC and REST (GET /v1beta1/projects/{project}/stage-health-outputs?stageNames=a&stageNames=b). Stages that do not exist or have no recorded health output are omitted from the response map; the endpoint has best-effort semantics. Signed-off-by: Jacob Boykin Signed-off-by: Jacob Boykin --- api/service/v1alpha1/service.pb.go | 5612 +++++++++-------- api/service/v1alpha1/service.proto | 24 + .../svcv1alpha1connect/service.connect.go | 40 + docs/docs/90-api-documentation.md | 27 + pkg/client/generated/core/core_client.go | 54 + .../get_stage_health_outputs_parameters.go | 194 + .../get_stage_health_outputs_responses.go | 104 + ...lpha1_get_stage_health_outputs_response.go | 49 + .../get_stage_health_outputs_v1alpha1.go | 143 + .../get_stage_health_outputs_v1alpha1_test.go | 263 + pkg/server/rest_router.go | 1 + pkg/server/stage_to_summary.go | 20 +- pkg/server/stage_to_summary_test.go | 25 + swagger.json | 63 + .../service-KargoService_connectquery.ts | 11 + ui/src/gen/api/service/v1alpha1/service_pb.ts | 363 +- ui/src/gen/api/v2/core/core.ts | 189 + .../v2/models/getStageHealthOutputsParams.ts | 14 + ...ceV1alpha1GetStageHealthOutputsResponse.ts | 15 + ...StageHealthOutputsResponseHealthOutputs.ts | 16 + ui/src/gen/api/v2/models/index.ts | 3 + 21 files changed, 4360 insertions(+), 2870 deletions(-) create mode 100644 pkg/client/generated/core/get_stage_health_outputs_parameters.go create mode 100644 pkg/client/generated/core/get_stage_health_outputs_responses.go create mode 100644 pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_get_stage_health_outputs_response.go create mode 100644 pkg/server/get_stage_health_outputs_v1alpha1.go create mode 100644 pkg/server/get_stage_health_outputs_v1alpha1_test.go create mode 100644 ui/src/gen/api/v2/models/getStageHealthOutputsParams.ts create mode 100644 ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponse.ts create mode 100644 ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponseHealthOutputs.ts diff --git a/api/service/v1alpha1/service.pb.go b/api/service/v1alpha1/service.pb.go index 9b9a6e9319..787f663a68 100644 --- a/api/service/v1alpha1/service.pb.go +++ b/api/service/v1alpha1/service.pb.go @@ -1972,6 +1972,117 @@ func (*GetStageResponse_Stage) isGetStageResponse_Result() {} func (*GetStageResponse_Raw) isGetStageResponse_Result() {} +// GetStageHealthOutputsRequest is the request for fetching the raw health +// output blob of one or more Stages within a project. +type GetStageHealthOutputsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // project is the name of the project containing the Stages. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // stage_names is the list of Stage names whose health outputs to return. + // Order is irrelevant; duplicates are deduplicated by the server. + StageNames []string `protobuf:"bytes,2,rep,name=stage_names,json=stageNames,proto3" json:"stage_names,omitempty"` +} + +func (x *GetStageHealthOutputsRequest) Reset() { + *x = GetStageHealthOutputsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetStageHealthOutputsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetStageHealthOutputsRequest) ProtoMessage() {} + +func (x *GetStageHealthOutputsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetStageHealthOutputsRequest.ProtoReflect.Descriptor instead. +func (*GetStageHealthOutputsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{32} +} + +func (x *GetStageHealthOutputsRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *GetStageHealthOutputsRequest) GetStageNames() []string { + if x != nil { + return x.StageNames + } + return nil +} + +// GetStageHealthOutputsResponse contains per-Stage raw health output blobs. +type GetStageHealthOutputsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // health_outputs maps Stage name to the raw bytes of its + // Stage.status.health.output.raw field. Stages that do not exist in the + // project or have no health output recorded are omitted from the map. + HealthOutputs map[string][]byte `protobuf:"bytes,1,rep,name=health_outputs,json=healthOutputs,proto3" json:"health_outputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *GetStageHealthOutputsResponse) Reset() { + *x = GetStageHealthOutputsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetStageHealthOutputsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetStageHealthOutputsResponse) ProtoMessage() {} + +func (x *GetStageHealthOutputsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetStageHealthOutputsResponse.ProtoReflect.Descriptor instead. +func (*GetStageHealthOutputsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{33} +} + +func (x *GetStageHealthOutputsResponse) GetHealthOutputs() map[string][]byte { + if x != nil { + return x.HealthOutputs + } + return nil +} + // WatchStagesRequest is the request for watching stage changes via streaming. type WatchStagesRequest struct { state protoimpl.MessageState @@ -1987,7 +2098,7 @@ type WatchStagesRequest struct { func (x *WatchStagesRequest) Reset() { *x = WatchStagesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[32] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2000,7 +2111,7 @@ func (x *WatchStagesRequest) String() string { func (*WatchStagesRequest) ProtoMessage() {} func (x *WatchStagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[32] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2013,7 +2124,7 @@ func (x *WatchStagesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchStagesRequest.ProtoReflect.Descriptor instead. func (*WatchStagesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{32} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{34} } func (x *WatchStagesRequest) GetProject() string { @@ -2045,7 +2156,7 @@ type WatchStagesResponse struct { func (x *WatchStagesResponse) Reset() { *x = WatchStagesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[33] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2058,7 +2169,7 @@ func (x *WatchStagesResponse) String() string { func (*WatchStagesResponse) ProtoMessage() {} func (x *WatchStagesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[33] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2071,7 +2182,7 @@ func (x *WatchStagesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchStagesResponse.ProtoReflect.Descriptor instead. func (*WatchStagesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{33} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{35} } func (x *WatchStagesResponse) GetStage() *v1alpha1.Stage { @@ -2103,7 +2214,7 @@ type DeleteStageRequest struct { func (x *DeleteStageRequest) Reset() { *x = DeleteStageRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[34] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2116,7 +2227,7 @@ func (x *DeleteStageRequest) String() string { func (*DeleteStageRequest) ProtoMessage() {} func (x *DeleteStageRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[34] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2129,7 +2240,7 @@ func (x *DeleteStageRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteStageRequest.ProtoReflect.Descriptor instead. func (*DeleteStageRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{34} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{36} } func (x *DeleteStageRequest) GetProject() string { @@ -2156,7 +2267,7 @@ type DeleteStageResponse struct { func (x *DeleteStageResponse) Reset() { *x = DeleteStageResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[35] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2169,7 +2280,7 @@ func (x *DeleteStageResponse) String() string { func (*DeleteStageResponse) ProtoMessage() {} func (x *DeleteStageResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[35] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2182,7 +2293,7 @@ func (x *DeleteStageResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteStageResponse.ProtoReflect.Descriptor instead. func (*DeleteStageResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{35} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{37} } // StageSummary is a lightweight projection of a Stage resource intended for @@ -2206,7 +2317,7 @@ type StageSummary struct { func (x *StageSummary) Reset() { *x = StageSummary{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[36] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2219,7 +2330,7 @@ func (x *StageSummary) String() string { func (*StageSummary) ProtoMessage() {} func (x *StageSummary) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[36] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2232,7 +2343,7 @@ func (x *StageSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use StageSummary.ProtoReflect.Descriptor instead. func (*StageSummary) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{36} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{38} } func (x *StageSummary) GetMetadata() *v1.ObjectMeta { @@ -2281,7 +2392,7 @@ type StageSpecSummary struct { func (x *StageSpecSummary) Reset() { *x = StageSpecSummary{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[37] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2294,7 +2405,7 @@ func (x *StageSpecSummary) String() string { func (*StageSpecSummary) ProtoMessage() {} func (x *StageSpecSummary) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[37] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2307,7 +2418,7 @@ func (x *StageSpecSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use StageSpecSummary.ProtoReflect.Descriptor instead. func (*StageSpecSummary) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{37} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{39} } func (x *StageSpecSummary) GetShard() string { @@ -2368,7 +2479,7 @@ type StageStatusSummary struct { func (x *StageStatusSummary) Reset() { *x = StageStatusSummary{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[38] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2381,7 +2492,7 @@ func (x *StageStatusSummary) String() string { func (*StageStatusSummary) ProtoMessage() {} func (x *StageStatusSummary) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[38] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2394,7 +2505,7 @@ func (x *StageStatusSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use StageStatusSummary.ProtoReflect.Descriptor instead. func (*StageStatusSummary) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{38} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{40} } func (x *StageStatusSummary) GetConditions() []*v1.Condition { @@ -2472,7 +2583,7 @@ type ListStageSummariesRequest struct { func (x *ListStageSummariesRequest) Reset() { *x = ListStageSummariesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[39] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2485,7 +2596,7 @@ func (x *ListStageSummariesRequest) String() string { func (*ListStageSummariesRequest) ProtoMessage() {} func (x *ListStageSummariesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[39] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2498,7 +2609,7 @@ func (x *ListStageSummariesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListStageSummariesRequest.ProtoReflect.Descriptor instead. func (*ListStageSummariesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{39} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{41} } func (x *ListStageSummariesRequest) GetProject() string { @@ -2533,7 +2644,7 @@ type ListStageSummariesResponse struct { func (x *ListStageSummariesResponse) Reset() { *x = ListStageSummariesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[40] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2546,7 +2657,7 @@ func (x *ListStageSummariesResponse) String() string { func (*ListStageSummariesResponse) ProtoMessage() {} func (x *ListStageSummariesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[40] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2559,7 +2670,7 @@ func (x *ListStageSummariesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListStageSummariesResponse.ProtoReflect.Descriptor instead. func (*ListStageSummariesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{40} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{42} } func (x *ListStageSummariesResponse) GetStageSummaries() []*StageSummary { @@ -2600,7 +2711,7 @@ type WatchStageSummariesRequest struct { func (x *WatchStageSummariesRequest) Reset() { *x = WatchStageSummariesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[41] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2613,7 +2724,7 @@ func (x *WatchStageSummariesRequest) String() string { func (*WatchStageSummariesRequest) ProtoMessage() {} func (x *WatchStageSummariesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[41] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2626,7 +2737,7 @@ func (x *WatchStageSummariesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchStageSummariesRequest.ProtoReflect.Descriptor instead. func (*WatchStageSummariesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{41} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{43} } func (x *WatchStageSummariesRequest) GetProject() string { @@ -2672,7 +2783,7 @@ type WatchStageSummariesResponse struct { func (x *WatchStageSummariesResponse) Reset() { *x = WatchStageSummariesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[42] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2685,7 +2796,7 @@ func (x *WatchStageSummariesResponse) String() string { func (*WatchStageSummariesResponse) ProtoMessage() {} func (x *WatchStageSummariesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[42] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2698,7 +2809,7 @@ func (x *WatchStageSummariesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchStageSummariesResponse.ProtoReflect.Descriptor instead. func (*WatchStageSummariesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{42} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{44} } func (x *WatchStageSummariesResponse) GetStageSummary() *StageSummary { @@ -2726,7 +2837,7 @@ type GetClusterConfigRequest struct { func (x *GetClusterConfigRequest) Reset() { *x = GetClusterConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[43] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2739,7 +2850,7 @@ func (x *GetClusterConfigRequest) String() string { func (*GetClusterConfigRequest) ProtoMessage() {} func (x *GetClusterConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[43] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2752,7 +2863,7 @@ func (x *GetClusterConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterConfigRequest.ProtoReflect.Descriptor instead. func (*GetClusterConfigRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{43} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{45} } func (x *GetClusterConfigRequest) GetFormat() RawFormat { @@ -2777,7 +2888,7 @@ type GetClusterConfigResponse struct { func (x *GetClusterConfigResponse) Reset() { *x = GetClusterConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[44] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2790,7 +2901,7 @@ func (x *GetClusterConfigResponse) String() string { func (*GetClusterConfigResponse) ProtoMessage() {} func (x *GetClusterConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[44] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2803,7 +2914,7 @@ func (x *GetClusterConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterConfigResponse.ProtoReflect.Descriptor instead. func (*GetClusterConfigResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{44} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{46} } func (m *GetClusterConfigResponse) GetResult() isGetClusterConfigResponse_Result { @@ -2852,7 +2963,7 @@ type DeleteClusterConfigRequest struct { func (x *DeleteClusterConfigRequest) Reset() { *x = DeleteClusterConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[45] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2865,7 +2976,7 @@ func (x *DeleteClusterConfigRequest) String() string { func (*DeleteClusterConfigRequest) ProtoMessage() {} func (x *DeleteClusterConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[45] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2878,7 +2989,7 @@ func (x *DeleteClusterConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteClusterConfigRequest.ProtoReflect.Descriptor instead. func (*DeleteClusterConfigRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{45} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{47} } type DeleteClusterConfigResponse struct { @@ -2890,7 +3001,7 @@ type DeleteClusterConfigResponse struct { func (x *DeleteClusterConfigResponse) Reset() { *x = DeleteClusterConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[46] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2903,7 +3014,7 @@ func (x *DeleteClusterConfigResponse) String() string { func (*DeleteClusterConfigResponse) ProtoMessage() {} func (x *DeleteClusterConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[46] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2916,7 +3027,7 @@ func (x *DeleteClusterConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteClusterConfigResponse.ProtoReflect.Descriptor instead. func (*DeleteClusterConfigResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{46} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{48} } type WatchClusterConfigRequest struct { @@ -2928,7 +3039,7 @@ type WatchClusterConfigRequest struct { func (x *WatchClusterConfigRequest) Reset() { *x = WatchClusterConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[47] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2941,7 +3052,7 @@ func (x *WatchClusterConfigRequest) String() string { func (*WatchClusterConfigRequest) ProtoMessage() {} func (x *WatchClusterConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[47] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2954,7 +3065,7 @@ func (x *WatchClusterConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchClusterConfigRequest.ProtoReflect.Descriptor instead. func (*WatchClusterConfigRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{47} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{49} } type WatchClusterConfigResponse struct { @@ -2969,7 +3080,7 @@ type WatchClusterConfigResponse struct { func (x *WatchClusterConfigResponse) Reset() { *x = WatchClusterConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[48] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2982,7 +3093,7 @@ func (x *WatchClusterConfigResponse) String() string { func (*WatchClusterConfigResponse) ProtoMessage() {} func (x *WatchClusterConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[48] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2995,7 +3106,7 @@ func (x *WatchClusterConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchClusterConfigResponse.ProtoReflect.Descriptor instead. func (*WatchClusterConfigResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{48} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{50} } func (x *WatchClusterConfigResponse) GetClusterConfig() *v1alpha1.ClusterConfig { @@ -3027,7 +3138,7 @@ type ListPromotionsRequest struct { func (x *ListPromotionsRequest) Reset() { *x = ListPromotionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[49] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3040,7 +3151,7 @@ func (x *ListPromotionsRequest) String() string { func (*ListPromotionsRequest) ProtoMessage() {} func (x *ListPromotionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[49] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3053,7 +3164,7 @@ func (x *ListPromotionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPromotionsRequest.ProtoReflect.Descriptor instead. func (*ListPromotionsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{49} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{51} } func (x *ListPromotionsRequest) GetProject() string { @@ -3083,7 +3194,7 @@ type ListPromotionsResponse struct { func (x *ListPromotionsResponse) Reset() { *x = ListPromotionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[50] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3096,7 +3207,7 @@ func (x *ListPromotionsResponse) String() string { func (*ListPromotionsResponse) ProtoMessage() {} func (x *ListPromotionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[50] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3109,7 +3220,7 @@ func (x *ListPromotionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPromotionsResponse.ProtoReflect.Descriptor instead. func (*ListPromotionsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{50} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{52} } func (x *ListPromotionsResponse) GetPromotions() []*v1alpha1.Promotion { @@ -3134,7 +3245,7 @@ type WatchPromotionsRequest struct { func (x *WatchPromotionsRequest) Reset() { *x = WatchPromotionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[51] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3147,7 +3258,7 @@ func (x *WatchPromotionsRequest) String() string { func (*WatchPromotionsRequest) ProtoMessage() {} func (x *WatchPromotionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[51] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3160,7 +3271,7 @@ func (x *WatchPromotionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchPromotionsRequest.ProtoReflect.Descriptor instead. func (*WatchPromotionsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{51} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{53} } func (x *WatchPromotionsRequest) GetProject() string { @@ -3192,7 +3303,7 @@ type WatchPromotionsResponse struct { func (x *WatchPromotionsResponse) Reset() { *x = WatchPromotionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[52] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3205,7 +3316,7 @@ func (x *WatchPromotionsResponse) String() string { func (*WatchPromotionsResponse) ProtoMessage() {} func (x *WatchPromotionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[52] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3218,7 +3329,7 @@ func (x *WatchPromotionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchPromotionsResponse.ProtoReflect.Descriptor instead. func (*WatchPromotionsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{52} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{54} } func (x *WatchPromotionsResponse) GetPromotion() *v1alpha1.Promotion { @@ -3252,7 +3363,7 @@ type GetPromotionRequest struct { func (x *GetPromotionRequest) Reset() { *x = GetPromotionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[53] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3265,7 +3376,7 @@ func (x *GetPromotionRequest) String() string { func (*GetPromotionRequest) ProtoMessage() {} func (x *GetPromotionRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[53] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3278,7 +3389,7 @@ func (x *GetPromotionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPromotionRequest.ProtoReflect.Descriptor instead. func (*GetPromotionRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{53} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{55} } func (x *GetPromotionRequest) GetProject() string { @@ -3318,7 +3429,7 @@ type GetPromotionResponse struct { func (x *GetPromotionResponse) Reset() { *x = GetPromotionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[54] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3331,7 +3442,7 @@ func (x *GetPromotionResponse) String() string { func (*GetPromotionResponse) ProtoMessage() {} func (x *GetPromotionResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[54] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3344,7 +3455,7 @@ func (x *GetPromotionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPromotionResponse.ProtoReflect.Descriptor instead. func (*GetPromotionResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{54} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{56} } func (m *GetPromotionResponse) GetResult() isGetPromotionResponse_Result { @@ -3401,7 +3512,7 @@ type WatchPromotionRequest struct { func (x *WatchPromotionRequest) Reset() { *x = WatchPromotionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[55] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3414,7 +3525,7 @@ func (x *WatchPromotionRequest) String() string { func (*WatchPromotionRequest) ProtoMessage() {} func (x *WatchPromotionRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[55] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3427,7 +3538,7 @@ func (x *WatchPromotionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchPromotionRequest.ProtoReflect.Descriptor instead. func (*WatchPromotionRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{55} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{57} } func (x *WatchPromotionRequest) GetProject() string { @@ -3459,7 +3570,7 @@ type WatchPromotionResponse struct { func (x *WatchPromotionResponse) Reset() { *x = WatchPromotionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[56] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3472,7 +3583,7 @@ func (x *WatchPromotionResponse) String() string { func (*WatchPromotionResponse) ProtoMessage() {} func (x *WatchPromotionResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[56] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3485,7 +3596,7 @@ func (x *WatchPromotionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchPromotionResponse.ProtoReflect.Descriptor instead. func (*WatchPromotionResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{56} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{58} } func (x *WatchPromotionResponse) GetPromotion() *v1alpha1.Promotion { @@ -3517,7 +3628,7 @@ type AbortPromotionRequest struct { func (x *AbortPromotionRequest) Reset() { *x = AbortPromotionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[57] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3530,7 +3641,7 @@ func (x *AbortPromotionRequest) String() string { func (*AbortPromotionRequest) ProtoMessage() {} func (x *AbortPromotionRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[57] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3543,7 +3654,7 @@ func (x *AbortPromotionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AbortPromotionRequest.ProtoReflect.Descriptor instead. func (*AbortPromotionRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{57} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{59} } func (x *AbortPromotionRequest) GetProject() string { @@ -3570,7 +3681,7 @@ type AbortPromotionResponse struct { func (x *AbortPromotionResponse) Reset() { *x = AbortPromotionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[58] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3583,7 +3694,7 @@ func (x *AbortPromotionResponse) String() string { func (*AbortPromotionResponse) ProtoMessage() {} func (x *AbortPromotionResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[58] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3596,7 +3707,7 @@ func (x *AbortPromotionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AbortPromotionResponse.ProtoReflect.Descriptor instead. func (*AbortPromotionResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{58} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{60} } // DeleteProjectRequest is the request for deleting a project and all associated resources. @@ -3612,7 +3723,7 @@ type DeleteProjectRequest struct { func (x *DeleteProjectRequest) Reset() { *x = DeleteProjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[59] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3625,7 +3736,7 @@ func (x *DeleteProjectRequest) String() string { func (*DeleteProjectRequest) ProtoMessage() {} func (x *DeleteProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[59] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3638,7 +3749,7 @@ func (x *DeleteProjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProjectRequest.ProtoReflect.Descriptor instead. func (*DeleteProjectRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{59} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{61} } func (x *DeleteProjectRequest) GetName() string { @@ -3658,7 +3769,7 @@ type DeleteProjectResponse struct { func (x *DeleteProjectResponse) Reset() { *x = DeleteProjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[60] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3671,7 +3782,7 @@ func (x *DeleteProjectResponse) String() string { func (*DeleteProjectResponse) ProtoMessage() {} func (x *DeleteProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[60] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3684,7 +3795,7 @@ func (x *DeleteProjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProjectResponse.ProtoReflect.Descriptor instead. func (*DeleteProjectResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{60} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{62} } // GetProjectRequest is the request for retrieving details of a specific project. @@ -3702,7 +3813,7 @@ type GetProjectRequest struct { func (x *GetProjectRequest) Reset() { *x = GetProjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[61] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3715,7 +3826,7 @@ func (x *GetProjectRequest) String() string { func (*GetProjectRequest) ProtoMessage() {} func (x *GetProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[61] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3728,7 +3839,7 @@ func (x *GetProjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProjectRequest.ProtoReflect.Descriptor instead. func (*GetProjectRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{61} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{63} } func (x *GetProjectRequest) GetName() string { @@ -3761,7 +3872,7 @@ type GetProjectResponse struct { func (x *GetProjectResponse) Reset() { *x = GetProjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[62] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3774,7 +3885,7 @@ func (x *GetProjectResponse) String() string { func (*GetProjectResponse) ProtoMessage() {} func (x *GetProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[62] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3787,7 +3898,7 @@ func (x *GetProjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProjectResponse.ProtoReflect.Descriptor instead. func (*GetProjectResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{62} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{64} } func (m *GetProjectResponse) GetResult() isGetProjectResponse_Result { @@ -3851,7 +3962,7 @@ type ListProjectsRequest struct { func (x *ListProjectsRequest) Reset() { *x = ListProjectsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[63] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3864,7 +3975,7 @@ func (x *ListProjectsRequest) String() string { func (*ListProjectsRequest) ProtoMessage() {} func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[63] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3877,7 +3988,7 @@ func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProjectsRequest.ProtoReflect.Descriptor instead. func (*ListProjectsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{63} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{65} } func (x *ListProjectsRequest) GetPageSize() int32 { @@ -3930,7 +4041,7 @@ type ListProjectsResponse struct { func (x *ListProjectsResponse) Reset() { *x = ListProjectsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[64] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3943,7 +4054,7 @@ func (x *ListProjectsResponse) String() string { func (*ListProjectsResponse) ProtoMessage() {} func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[64] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3956,7 +4067,7 @@ func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProjectsResponse.ProtoReflect.Descriptor instead. func (*ListProjectsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{64} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{66} } func (x *ListProjectsResponse) GetProjects() []*v1alpha1.Project { @@ -3988,7 +4099,7 @@ type GetProjectConfigRequest struct { func (x *GetProjectConfigRequest) Reset() { *x = GetProjectConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[65] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4001,7 +4112,7 @@ func (x *GetProjectConfigRequest) String() string { func (*GetProjectConfigRequest) ProtoMessage() {} func (x *GetProjectConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[65] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4014,7 +4125,7 @@ func (x *GetProjectConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProjectConfigRequest.ProtoReflect.Descriptor instead. func (*GetProjectConfigRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{65} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{67} } func (x *GetProjectConfigRequest) GetProject() string { @@ -4047,7 +4158,7 @@ type GetProjectConfigResponse struct { func (x *GetProjectConfigResponse) Reset() { *x = GetProjectConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[66] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4060,7 +4171,7 @@ func (x *GetProjectConfigResponse) String() string { func (*GetProjectConfigResponse) ProtoMessage() {} func (x *GetProjectConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[66] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4073,7 +4184,7 @@ func (x *GetProjectConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProjectConfigResponse.ProtoReflect.Descriptor instead. func (*GetProjectConfigResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{66} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{68} } func (m *GetProjectConfigResponse) GetResult() isGetProjectConfigResponse_Result { @@ -4128,7 +4239,7 @@ type DeleteProjectConfigRequest struct { func (x *DeleteProjectConfigRequest) Reset() { *x = DeleteProjectConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[67] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4141,7 +4252,7 @@ func (x *DeleteProjectConfigRequest) String() string { func (*DeleteProjectConfigRequest) ProtoMessage() {} func (x *DeleteProjectConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[67] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4154,7 +4265,7 @@ func (x *DeleteProjectConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProjectConfigRequest.ProtoReflect.Descriptor instead. func (*DeleteProjectConfigRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{67} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{69} } func (x *DeleteProjectConfigRequest) GetProject() string { @@ -4174,7 +4285,7 @@ type DeleteProjectConfigResponse struct { func (x *DeleteProjectConfigResponse) Reset() { *x = DeleteProjectConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[68] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4187,7 +4298,7 @@ func (x *DeleteProjectConfigResponse) String() string { func (*DeleteProjectConfigResponse) ProtoMessage() {} func (x *DeleteProjectConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[68] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4200,7 +4311,7 @@ func (x *DeleteProjectConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteProjectConfigResponse.ProtoReflect.Descriptor instead. func (*DeleteProjectConfigResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{68} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{70} } // WatchProjectConfigRequest is the request for streaming project configuration changes. @@ -4216,7 +4327,7 @@ type WatchProjectConfigRequest struct { func (x *WatchProjectConfigRequest) Reset() { *x = WatchProjectConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[69] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4229,7 +4340,7 @@ func (x *WatchProjectConfigRequest) String() string { func (*WatchProjectConfigRequest) ProtoMessage() {} func (x *WatchProjectConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[69] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4242,7 +4353,7 @@ func (x *WatchProjectConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchProjectConfigRequest.ProtoReflect.Descriptor instead. func (*WatchProjectConfigRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{69} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{71} } func (x *WatchProjectConfigRequest) GetProject() string { @@ -4267,7 +4378,7 @@ type WatchProjectConfigResponse struct { func (x *WatchProjectConfigResponse) Reset() { *x = WatchProjectConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[70] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4280,7 +4391,7 @@ func (x *WatchProjectConfigResponse) String() string { func (*WatchProjectConfigResponse) ProtoMessage() {} func (x *WatchProjectConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[70] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4293,7 +4404,7 @@ func (x *WatchProjectConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchProjectConfigResponse.ProtoReflect.Descriptor instead. func (*WatchProjectConfigResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{70} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{72} } func (x *WatchProjectConfigResponse) GetProjectConfig() *v1alpha1.ProjectConfig { @@ -4329,7 +4440,7 @@ type ApproveFreightRequest struct { func (x *ApproveFreightRequest) Reset() { *x = ApproveFreightRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[71] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4342,7 +4453,7 @@ func (x *ApproveFreightRequest) String() string { func (*ApproveFreightRequest) ProtoMessage() {} func (x *ApproveFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[71] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4355,7 +4466,7 @@ func (x *ApproveFreightRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ApproveFreightRequest.ProtoReflect.Descriptor instead. func (*ApproveFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{71} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{73} } func (x *ApproveFreightRequest) GetProject() string { @@ -4396,7 +4507,7 @@ type ApproveFreightResponse struct { func (x *ApproveFreightResponse) Reset() { *x = ApproveFreightResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[72] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4409,7 +4520,7 @@ func (x *ApproveFreightResponse) String() string { func (*ApproveFreightResponse) ProtoMessage() {} func (x *ApproveFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[72] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4422,7 +4533,7 @@ func (x *ApproveFreightResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ApproveFreightResponse.ProtoReflect.Descriptor instead. func (*ApproveFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{72} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{74} } // DeleteFreightRequest is the request for deleting freight. @@ -4442,7 +4553,7 @@ type DeleteFreightRequest struct { func (x *DeleteFreightRequest) Reset() { *x = DeleteFreightRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[73] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4455,7 +4566,7 @@ func (x *DeleteFreightRequest) String() string { func (*DeleteFreightRequest) ProtoMessage() {} func (x *DeleteFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[73] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4468,7 +4579,7 @@ func (x *DeleteFreightRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFreightRequest.ProtoReflect.Descriptor instead. func (*DeleteFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{73} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{75} } func (x *DeleteFreightRequest) GetProject() string { @@ -4502,7 +4613,7 @@ type DeleteFreightResponse struct { func (x *DeleteFreightResponse) Reset() { *x = DeleteFreightResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[74] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4515,7 +4626,7 @@ func (x *DeleteFreightResponse) String() string { func (*DeleteFreightResponse) ProtoMessage() {} func (x *DeleteFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[74] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4528,7 +4639,7 @@ func (x *DeleteFreightResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFreightResponse.ProtoReflect.Descriptor instead. func (*DeleteFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{74} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{76} } // GetFreightRequest is the request for retrieving details of specific freight. @@ -4550,7 +4661,7 @@ type GetFreightRequest struct { func (x *GetFreightRequest) Reset() { *x = GetFreightRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[75] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4563,7 +4674,7 @@ func (x *GetFreightRequest) String() string { func (*GetFreightRequest) ProtoMessage() {} func (x *GetFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[75] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4576,7 +4687,7 @@ func (x *GetFreightRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFreightRequest.ProtoReflect.Descriptor instead. func (*GetFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{75} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{77} } func (x *GetFreightRequest) GetProject() string { @@ -4623,7 +4734,7 @@ type GetFreightResponse struct { func (x *GetFreightResponse) Reset() { *x = GetFreightResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[76] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4636,7 +4747,7 @@ func (x *GetFreightResponse) String() string { func (*GetFreightResponse) ProtoMessage() {} func (x *GetFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[76] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4649,7 +4760,7 @@ func (x *GetFreightResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFreightResponse.ProtoReflect.Descriptor instead. func (*GetFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{76} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{78} } func (m *GetFreightResponse) GetResult() isGetFreightResponse_Result { @@ -4704,7 +4815,7 @@ type WatchFreightRequest struct { func (x *WatchFreightRequest) Reset() { *x = WatchFreightRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[77] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4717,7 +4828,7 @@ func (x *WatchFreightRequest) String() string { func (*WatchFreightRequest) ProtoMessage() {} func (x *WatchFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[77] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4730,7 +4841,7 @@ func (x *WatchFreightRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchFreightRequest.ProtoReflect.Descriptor instead. func (*WatchFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{77} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{79} } func (x *WatchFreightRequest) GetProject() string { @@ -4755,7 +4866,7 @@ type WatchFreightResponse struct { func (x *WatchFreightResponse) Reset() { *x = WatchFreightResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[78] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4768,7 +4879,7 @@ func (x *WatchFreightResponse) String() string { func (*WatchFreightResponse) ProtoMessage() {} func (x *WatchFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[78] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4781,7 +4892,7 @@ func (x *WatchFreightResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchFreightResponse.ProtoReflect.Descriptor instead. func (*WatchFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{78} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{80} } func (x *WatchFreightResponse) GetFreight() *v1alpha1.Freight { @@ -4817,7 +4928,7 @@ type PromoteToStageRequest struct { func (x *PromoteToStageRequest) Reset() { *x = PromoteToStageRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[79] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4830,7 +4941,7 @@ func (x *PromoteToStageRequest) String() string { func (*PromoteToStageRequest) ProtoMessage() {} func (x *PromoteToStageRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[79] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4843,7 +4954,7 @@ func (x *PromoteToStageRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PromoteToStageRequest.ProtoReflect.Descriptor instead. func (*PromoteToStageRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{79} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{81} } func (x *PromoteToStageRequest) GetProject() string { @@ -4887,7 +4998,7 @@ type PromoteToStageResponse struct { func (x *PromoteToStageResponse) Reset() { *x = PromoteToStageResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[80] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4900,7 +5011,7 @@ func (x *PromoteToStageResponse) String() string { func (*PromoteToStageResponse) ProtoMessage() {} func (x *PromoteToStageResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[80] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4913,7 +5024,7 @@ func (x *PromoteToStageResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PromoteToStageResponse.ProtoReflect.Descriptor instead. func (*PromoteToStageResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{80} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{82} } func (x *PromoteToStageResponse) GetPromotion() *v1alpha1.Promotion { @@ -4942,7 +5053,7 @@ type PromoteDownstreamRequest struct { func (x *PromoteDownstreamRequest) Reset() { *x = PromoteDownstreamRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[81] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4955,7 +5066,7 @@ func (x *PromoteDownstreamRequest) String() string { func (*PromoteDownstreamRequest) ProtoMessage() {} func (x *PromoteDownstreamRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[81] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4968,7 +5079,7 @@ func (x *PromoteDownstreamRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PromoteDownstreamRequest.ProtoReflect.Descriptor instead. func (*PromoteDownstreamRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{81} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{83} } func (x *PromoteDownstreamRequest) GetProject() string { @@ -5012,7 +5123,7 @@ type PromoteDownstreamResponse struct { func (x *PromoteDownstreamResponse) Reset() { *x = PromoteDownstreamResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[82] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5025,7 +5136,7 @@ func (x *PromoteDownstreamResponse) String() string { func (*PromoteDownstreamResponse) ProtoMessage() {} func (x *PromoteDownstreamResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[82] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5038,7 +5149,7 @@ func (x *PromoteDownstreamResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PromoteDownstreamResponse.ProtoReflect.Descriptor instead. func (*PromoteDownstreamResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{82} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{84} } func (x *PromoteDownstreamResponse) GetPromotions() []*v1alpha1.Promotion { @@ -5073,7 +5184,7 @@ type QueryFreightRequest struct { func (x *QueryFreightRequest) Reset() { *x = QueryFreightRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[83] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5086,7 +5197,7 @@ func (x *QueryFreightRequest) String() string { func (*QueryFreightRequest) ProtoMessage() {} func (x *QueryFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[83] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5099,7 +5210,7 @@ func (x *QueryFreightRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryFreightRequest.ProtoReflect.Descriptor instead. func (*QueryFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{83} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{85} } func (x *QueryFreightRequest) GetProject() string { @@ -5164,7 +5275,7 @@ type QueryFreightResponse struct { func (x *QueryFreightResponse) Reset() { *x = QueryFreightResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[84] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5177,7 +5288,7 @@ func (x *QueryFreightResponse) String() string { func (*QueryFreightResponse) ProtoMessage() {} func (x *QueryFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[84] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5190,7 +5301,7 @@ func (x *QueryFreightResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryFreightResponse.ProtoReflect.Descriptor instead. func (*QueryFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{84} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{86} } func (x *QueryFreightResponse) GetGroups() map[string]*FreightList { @@ -5213,7 +5324,7 @@ type FreightList struct { func (x *FreightList) Reset() { *x = FreightList{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[85] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5226,7 +5337,7 @@ func (x *FreightList) String() string { func (*FreightList) ProtoMessage() {} func (x *FreightList) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[85] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5239,7 +5350,7 @@ func (x *FreightList) ProtoReflect() protoreflect.Message { // Deprecated: Use FreightList.ProtoReflect.Descriptor instead. func (*FreightList) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{85} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{87} } func (x *FreightList) GetFreight() []*v1alpha1.Freight { @@ -5268,7 +5379,7 @@ type UpdateFreightAliasRequest struct { func (x *UpdateFreightAliasRequest) Reset() { *x = UpdateFreightAliasRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[86] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5281,7 +5392,7 @@ func (x *UpdateFreightAliasRequest) String() string { func (*UpdateFreightAliasRequest) ProtoMessage() {} func (x *UpdateFreightAliasRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[86] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5294,7 +5405,7 @@ func (x *UpdateFreightAliasRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateFreightAliasRequest.ProtoReflect.Descriptor instead. func (*UpdateFreightAliasRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{86} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{88} } func (x *UpdateFreightAliasRequest) GetProject() string { @@ -5335,7 +5446,7 @@ type UpdateFreightAliasResponse struct { func (x *UpdateFreightAliasResponse) Reset() { *x = UpdateFreightAliasResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[87] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5348,7 +5459,7 @@ func (x *UpdateFreightAliasResponse) String() string { func (*UpdateFreightAliasResponse) ProtoMessage() {} func (x *UpdateFreightAliasResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[87] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5361,7 +5472,7 @@ func (x *UpdateFreightAliasResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateFreightAliasResponse.ProtoReflect.Descriptor instead. func (*UpdateFreightAliasResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{87} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{89} } // ReverifyRequest is the request for triggering re-execution of verification processes for a stage. @@ -5379,7 +5490,7 @@ type ReverifyRequest struct { func (x *ReverifyRequest) Reset() { *x = ReverifyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[88] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5392,7 +5503,7 @@ func (x *ReverifyRequest) String() string { func (*ReverifyRequest) ProtoMessage() {} func (x *ReverifyRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[88] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5405,7 +5516,7 @@ func (x *ReverifyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReverifyRequest.ProtoReflect.Descriptor instead. func (*ReverifyRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{88} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{90} } func (x *ReverifyRequest) GetProject() string { @@ -5432,7 +5543,7 @@ type ReverifyResponse struct { func (x *ReverifyResponse) Reset() { *x = ReverifyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[89] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5445,7 +5556,7 @@ func (x *ReverifyResponse) String() string { func (*ReverifyResponse) ProtoMessage() {} func (x *ReverifyResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[89] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5458,7 +5569,7 @@ func (x *ReverifyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReverifyResponse.ProtoReflect.Descriptor instead. func (*ReverifyResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{89} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{91} } // AbortVerificationRequest is the request for canceling running verification processes for a stage. @@ -5476,7 +5587,7 @@ type AbortVerificationRequest struct { func (x *AbortVerificationRequest) Reset() { *x = AbortVerificationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[90] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5489,7 +5600,7 @@ func (x *AbortVerificationRequest) String() string { func (*AbortVerificationRequest) ProtoMessage() {} func (x *AbortVerificationRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[90] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5502,7 +5613,7 @@ func (x *AbortVerificationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AbortVerificationRequest.ProtoReflect.Descriptor instead. func (*AbortVerificationRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{90} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{92} } func (x *AbortVerificationRequest) GetProject() string { @@ -5529,7 +5640,7 @@ type AbortVerificationResponse struct { func (x *AbortVerificationResponse) Reset() { *x = AbortVerificationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[91] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5542,7 +5653,7 @@ func (x *AbortVerificationResponse) String() string { func (*AbortVerificationResponse) ProtoMessage() {} func (x *AbortVerificationResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[91] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5555,7 +5666,7 @@ func (x *AbortVerificationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AbortVerificationResponse.ProtoReflect.Descriptor instead. func (*AbortVerificationResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{91} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{93} } // ListWarehousesRequest is the request for listing warehouses within a project. @@ -5571,7 +5682,7 @@ type ListWarehousesRequest struct { func (x *ListWarehousesRequest) Reset() { *x = ListWarehousesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[92] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5584,7 +5695,7 @@ func (x *ListWarehousesRequest) String() string { func (*ListWarehousesRequest) ProtoMessage() {} func (x *ListWarehousesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[92] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5597,7 +5708,7 @@ func (x *ListWarehousesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListWarehousesRequest.ProtoReflect.Descriptor instead. func (*ListWarehousesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{92} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{94} } func (x *ListWarehousesRequest) GetProject() string { @@ -5620,7 +5731,7 @@ type ListWarehousesResponse struct { func (x *ListWarehousesResponse) Reset() { *x = ListWarehousesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[93] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5633,7 +5744,7 @@ func (x *ListWarehousesResponse) String() string { func (*ListWarehousesResponse) ProtoMessage() {} func (x *ListWarehousesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[93] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5646,7 +5757,7 @@ func (x *ListWarehousesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListWarehousesResponse.ProtoReflect.Descriptor instead. func (*ListWarehousesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{93} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{95} } func (x *ListWarehousesResponse) GetWarehouses() []*v1alpha1.Warehouse { @@ -5673,7 +5784,7 @@ type GetWarehouseRequest struct { func (x *GetWarehouseRequest) Reset() { *x = GetWarehouseRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[94] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5686,7 +5797,7 @@ func (x *GetWarehouseRequest) String() string { func (*GetWarehouseRequest) ProtoMessage() {} func (x *GetWarehouseRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[94] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5699,7 +5810,7 @@ func (x *GetWarehouseRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWarehouseRequest.ProtoReflect.Descriptor instead. func (*GetWarehouseRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{94} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{96} } func (x *GetWarehouseRequest) GetProject() string { @@ -5739,7 +5850,7 @@ type GetWarehouseResponse struct { func (x *GetWarehouseResponse) Reset() { *x = GetWarehouseResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[95] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5752,7 +5863,7 @@ func (x *GetWarehouseResponse) String() string { func (*GetWarehouseResponse) ProtoMessage() {} func (x *GetWarehouseResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[95] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5765,7 +5876,7 @@ func (x *GetWarehouseResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWarehouseResponse.ProtoReflect.Descriptor instead. func (*GetWarehouseResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{95} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{97} } func (m *GetWarehouseResponse) GetResult() isGetWarehouseResponse_Result { @@ -5822,7 +5933,7 @@ type WatchWarehousesRequest struct { func (x *WatchWarehousesRequest) Reset() { *x = WatchWarehousesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[96] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5835,7 +5946,7 @@ func (x *WatchWarehousesRequest) String() string { func (*WatchWarehousesRequest) ProtoMessage() {} func (x *WatchWarehousesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[96] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5848,7 +5959,7 @@ func (x *WatchWarehousesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchWarehousesRequest.ProtoReflect.Descriptor instead. func (*WatchWarehousesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{96} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{98} } func (x *WatchWarehousesRequest) GetProject() string { @@ -5880,7 +5991,7 @@ type WatchWarehousesResponse struct { func (x *WatchWarehousesResponse) Reset() { *x = WatchWarehousesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[97] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5893,7 +6004,7 @@ func (x *WatchWarehousesResponse) String() string { func (*WatchWarehousesResponse) ProtoMessage() {} func (x *WatchWarehousesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[97] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5906,7 +6017,7 @@ func (x *WatchWarehousesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WatchWarehousesResponse.ProtoReflect.Descriptor instead. func (*WatchWarehousesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{97} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{99} } func (x *WatchWarehousesResponse) GetWarehouse() *v1alpha1.Warehouse { @@ -5938,7 +6049,7 @@ type DeleteWarehouseRequest struct { func (x *DeleteWarehouseRequest) Reset() { *x = DeleteWarehouseRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[98] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5951,7 +6062,7 @@ func (x *DeleteWarehouseRequest) String() string { func (*DeleteWarehouseRequest) ProtoMessage() {} func (x *DeleteWarehouseRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[98] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5964,7 +6075,7 @@ func (x *DeleteWarehouseRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteWarehouseRequest.ProtoReflect.Descriptor instead. func (*DeleteWarehouseRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{98} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{100} } func (x *DeleteWarehouseRequest) GetProject() string { @@ -5991,7 +6102,7 @@ type DeleteWarehouseResponse struct { func (x *DeleteWarehouseResponse) Reset() { *x = DeleteWarehouseResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[99] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6004,7 +6115,7 @@ func (x *DeleteWarehouseResponse) String() string { func (*DeleteWarehouseResponse) ProtoMessage() {} func (x *DeleteWarehouseResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[99] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6017,7 +6128,7 @@ func (x *DeleteWarehouseResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteWarehouseResponse.ProtoReflect.Descriptor instead. func (*DeleteWarehouseResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{99} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{101} } // CreateConfigMapRequest is the request for creating a project-level, @@ -6048,7 +6159,7 @@ type CreateConfigMapRequest struct { func (x *CreateConfigMapRequest) Reset() { *x = CreateConfigMapRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[100] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6061,7 +6172,7 @@ func (x *CreateConfigMapRequest) String() string { func (*CreateConfigMapRequest) ProtoMessage() {} func (x *CreateConfigMapRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[100] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6074,7 +6185,7 @@ func (x *CreateConfigMapRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateConfigMapRequest.ProtoReflect.Descriptor instead. func (*CreateConfigMapRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{100} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{102} } func (x *CreateConfigMapRequest) GetSystemLevel() bool { @@ -6133,7 +6244,7 @@ type CreateConfigMapResponse struct { func (x *CreateConfigMapResponse) Reset() { *x = CreateConfigMapResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[101] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6146,7 +6257,7 @@ func (x *CreateConfigMapResponse) String() string { func (*CreateConfigMapResponse) ProtoMessage() {} func (x *CreateConfigMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[101] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6159,7 +6270,7 @@ func (x *CreateConfigMapResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateConfigMapResponse.ProtoReflect.Descriptor instead. func (*CreateConfigMapResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{101} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{103} } func (x *CreateConfigMapResponse) GetConfigMap() *v11.ConfigMap { @@ -6190,7 +6301,7 @@ type DeleteConfigMapRequest struct { func (x *DeleteConfigMapRequest) Reset() { *x = DeleteConfigMapRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[102] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6203,7 +6314,7 @@ func (x *DeleteConfigMapRequest) String() string { func (*DeleteConfigMapRequest) ProtoMessage() {} func (x *DeleteConfigMapRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[102] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6216,7 +6327,7 @@ func (x *DeleteConfigMapRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteConfigMapRequest.ProtoReflect.Descriptor instead. func (*DeleteConfigMapRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{102} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{104} } func (x *DeleteConfigMapRequest) GetSystemLevel() bool { @@ -6250,7 +6361,7 @@ type DeleteConfigMapResponse struct { func (x *DeleteConfigMapResponse) Reset() { *x = DeleteConfigMapResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[103] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6263,7 +6374,7 @@ func (x *DeleteConfigMapResponse) String() string { func (*DeleteConfigMapResponse) ProtoMessage() {} func (x *DeleteConfigMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[103] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6276,7 +6387,7 @@ func (x *DeleteConfigMapResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteConfigMapResponse.ProtoReflect.Descriptor instead. func (*DeleteConfigMapResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{103} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{105} } // ListConfigMapsRequest is the request for listing all project-level, @@ -6298,7 +6409,7 @@ type ListConfigMapsRequest struct { func (x *ListConfigMapsRequest) Reset() { *x = ListConfigMapsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[104] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6311,7 +6422,7 @@ func (x *ListConfigMapsRequest) String() string { func (*ListConfigMapsRequest) ProtoMessage() {} func (x *ListConfigMapsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[104] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6324,7 +6435,7 @@ func (x *ListConfigMapsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListConfigMapsRequest.ProtoReflect.Descriptor instead. func (*ListConfigMapsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{104} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{106} } func (x *ListConfigMapsRequest) GetSystemLevel() bool { @@ -6354,7 +6465,7 @@ type ListConfigMapsResponse struct { func (x *ListConfigMapsResponse) Reset() { *x = ListConfigMapsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[105] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6367,7 +6478,7 @@ func (x *ListConfigMapsResponse) String() string { func (*ListConfigMapsResponse) ProtoMessage() {} func (x *ListConfigMapsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[105] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6380,7 +6491,7 @@ func (x *ListConfigMapsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListConfigMapsResponse.ProtoReflect.Descriptor instead. func (*ListConfigMapsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{105} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{107} } func (x *ListConfigMapsResponse) GetConfigMaps() []*v11.ConfigMap { @@ -6414,7 +6525,7 @@ type GetConfigMapRequest struct { func (x *GetConfigMapRequest) Reset() { *x = GetConfigMapRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[106] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6427,7 +6538,7 @@ func (x *GetConfigMapRequest) String() string { func (*GetConfigMapRequest) ProtoMessage() {} func (x *GetConfigMapRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[106] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6440,7 +6551,7 @@ func (x *GetConfigMapRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConfigMapRequest.ProtoReflect.Descriptor instead. func (*GetConfigMapRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{106} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{108} } func (x *GetConfigMapRequest) GetSystemLevel() bool { @@ -6487,7 +6598,7 @@ type GetConfigMapResponse struct { func (x *GetConfigMapResponse) Reset() { *x = GetConfigMapResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[107] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6500,7 +6611,7 @@ func (x *GetConfigMapResponse) String() string { func (*GetConfigMapResponse) ProtoMessage() {} func (x *GetConfigMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[107] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6513,7 +6624,7 @@ func (x *GetConfigMapResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConfigMapResponse.ProtoReflect.Descriptor instead. func (*GetConfigMapResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{107} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{109} } func (m *GetConfigMapResponse) GetResult() isGetConfigMapResponse_Result { @@ -6583,7 +6694,7 @@ type UpdateConfigMapRequest struct { func (x *UpdateConfigMapRequest) Reset() { *x = UpdateConfigMapRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[108] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6596,7 +6707,7 @@ func (x *UpdateConfigMapRequest) String() string { func (*UpdateConfigMapRequest) ProtoMessage() {} func (x *UpdateConfigMapRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[108] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6609,7 +6720,7 @@ func (x *UpdateConfigMapRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateConfigMapRequest.ProtoReflect.Descriptor instead. func (*UpdateConfigMapRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{108} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{110} } func (x *UpdateConfigMapRequest) GetSystemLevel() bool { @@ -6667,7 +6778,7 @@ type UpdateConfigMapResponse struct { func (x *UpdateConfigMapResponse) Reset() { *x = UpdateConfigMapResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[109] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6680,7 +6791,7 @@ func (x *UpdateConfigMapResponse) String() string { func (*UpdateConfigMapResponse) ProtoMessage() {} func (x *UpdateConfigMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[109] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6693,7 +6804,7 @@ func (x *UpdateConfigMapResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateConfigMapResponse.ProtoReflect.Descriptor instead. func (*UpdateConfigMapResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{109} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{111} } func (x *UpdateConfigMapResponse) GetConfigMap() *v11.ConfigMap { @@ -6730,7 +6841,7 @@ type CreateRepoCredentialsRequest struct { func (x *CreateRepoCredentialsRequest) Reset() { *x = CreateRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[110] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6743,7 +6854,7 @@ func (x *CreateRepoCredentialsRequest) String() string { func (*CreateRepoCredentialsRequest) ProtoMessage() {} func (x *CreateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[110] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6756,7 +6867,7 @@ func (x *CreateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRepoCredentialsRequest.ProtoReflect.Descriptor instead. func (*CreateRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{110} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{112} } func (x *CreateRepoCredentialsRequest) GetProject() string { @@ -6828,7 +6939,7 @@ type CreateRepoCredentialsResponse struct { func (x *CreateRepoCredentialsResponse) Reset() { *x = CreateRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[111] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6841,7 +6952,7 @@ func (x *CreateRepoCredentialsResponse) String() string { func (*CreateRepoCredentialsResponse) ProtoMessage() {} func (x *CreateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[111] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6854,7 +6965,7 @@ func (x *CreateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRepoCredentialsResponse.ProtoReflect.Descriptor instead. func (*CreateRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{111} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{113} } func (x *CreateRepoCredentialsResponse) GetCredentials() *v11.Secret { @@ -6880,7 +6991,7 @@ type DeleteRepoCredentialsRequest struct { func (x *DeleteRepoCredentialsRequest) Reset() { *x = DeleteRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[112] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6893,7 +7004,7 @@ func (x *DeleteRepoCredentialsRequest) String() string { func (*DeleteRepoCredentialsRequest) ProtoMessage() {} func (x *DeleteRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[112] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6906,7 +7017,7 @@ func (x *DeleteRepoCredentialsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRepoCredentialsRequest.ProtoReflect.Descriptor instead. func (*DeleteRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{112} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{114} } func (x *DeleteRepoCredentialsRequest) GetProject() string { @@ -6933,7 +7044,7 @@ type DeleteRepoCredentialsResponse struct { func (x *DeleteRepoCredentialsResponse) Reset() { *x = DeleteRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[113] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6946,7 +7057,7 @@ func (x *DeleteRepoCredentialsResponse) String() string { func (*DeleteRepoCredentialsResponse) ProtoMessage() {} func (x *DeleteRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[113] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6959,7 +7070,7 @@ func (x *DeleteRepoCredentialsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRepoCredentialsResponse.ProtoReflect.Descriptor instead. func (*DeleteRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{113} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{115} } // GetRepoCredentialsRequest is the request for retrieving existing repository credentials. @@ -6979,7 +7090,7 @@ type GetRepoCredentialsRequest struct { func (x *GetRepoCredentialsRequest) Reset() { *x = GetRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[114] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6992,7 +7103,7 @@ func (x *GetRepoCredentialsRequest) String() string { func (*GetRepoCredentialsRequest) ProtoMessage() {} func (x *GetRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[114] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7005,7 +7116,7 @@ func (x *GetRepoCredentialsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepoCredentialsRequest.ProtoReflect.Descriptor instead. func (*GetRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{114} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{116} } func (x *GetRepoCredentialsRequest) GetProject() string { @@ -7045,7 +7156,7 @@ type GetRepoCredentialsResponse struct { func (x *GetRepoCredentialsResponse) Reset() { *x = GetRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[115] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7058,7 +7169,7 @@ func (x *GetRepoCredentialsResponse) String() string { func (*GetRepoCredentialsResponse) ProtoMessage() {} func (x *GetRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[115] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7071,7 +7182,7 @@ func (x *GetRepoCredentialsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepoCredentialsResponse.ProtoReflect.Descriptor instead. func (*GetRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{115} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{117} } func (m *GetRepoCredentialsResponse) GetResult() isGetRepoCredentialsResponse_Result { @@ -7126,7 +7237,7 @@ type ListRepoCredentialsRequest struct { func (x *ListRepoCredentialsRequest) Reset() { *x = ListRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[116] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7139,7 +7250,7 @@ func (x *ListRepoCredentialsRequest) String() string { func (*ListRepoCredentialsRequest) ProtoMessage() {} func (x *ListRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[116] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7152,7 +7263,7 @@ func (x *ListRepoCredentialsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRepoCredentialsRequest.ProtoReflect.Descriptor instead. func (*ListRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{116} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{118} } func (x *ListRepoCredentialsRequest) GetProject() string { @@ -7175,7 +7286,7 @@ type ListRepoCredentialsResponse struct { func (x *ListRepoCredentialsResponse) Reset() { *x = ListRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[117] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7188,7 +7299,7 @@ func (x *ListRepoCredentialsResponse) String() string { func (*ListRepoCredentialsResponse) ProtoMessage() {} func (x *ListRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[117] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7201,7 +7312,7 @@ func (x *ListRepoCredentialsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRepoCredentialsResponse.ProtoReflect.Descriptor instead. func (*ListRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{117} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{119} } func (x *ListRepoCredentialsResponse) GetCredentials() []*v11.Secret { @@ -7238,7 +7349,7 @@ type UpdateRepoCredentialsRequest struct { func (x *UpdateRepoCredentialsRequest) Reset() { *x = UpdateRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[118] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7251,7 +7362,7 @@ func (x *UpdateRepoCredentialsRequest) String() string { func (*UpdateRepoCredentialsRequest) ProtoMessage() {} func (x *UpdateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[118] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7264,7 +7375,7 @@ func (x *UpdateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRepoCredentialsRequest.ProtoReflect.Descriptor instead. func (*UpdateRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{118} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{120} } func (x *UpdateRepoCredentialsRequest) GetProject() string { @@ -7336,7 +7447,7 @@ type UpdateRepoCredentialsResponse struct { func (x *UpdateRepoCredentialsResponse) Reset() { *x = UpdateRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[119] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7349,7 +7460,7 @@ func (x *UpdateRepoCredentialsResponse) String() string { func (*UpdateRepoCredentialsResponse) ProtoMessage() {} func (x *UpdateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[119] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7362,7 +7473,7 @@ func (x *UpdateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRepoCredentialsResponse.ProtoReflect.Descriptor instead. func (*UpdateRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{119} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{121} } func (x *UpdateRepoCredentialsResponse) GetCredentials() *v11.Secret { @@ -7391,7 +7502,7 @@ type ListGenericCredentialsRequest struct { func (x *ListGenericCredentialsRequest) Reset() { *x = ListGenericCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[120] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7404,7 +7515,7 @@ func (x *ListGenericCredentialsRequest) String() string { func (*ListGenericCredentialsRequest) ProtoMessage() {} func (x *ListGenericCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[120] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7417,7 +7528,7 @@ func (x *ListGenericCredentialsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGenericCredentialsRequest.ProtoReflect.Descriptor instead. func (*ListGenericCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{120} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{122} } func (x *ListGenericCredentialsRequest) GetSystemLevel() bool { @@ -7447,7 +7558,7 @@ type ListGenericCredentialsResponse struct { func (x *ListGenericCredentialsResponse) Reset() { *x = ListGenericCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[121] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7460,7 +7571,7 @@ func (x *ListGenericCredentialsResponse) String() string { func (*ListGenericCredentialsResponse) ProtoMessage() {} func (x *ListGenericCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[121] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7473,7 +7584,7 @@ func (x *ListGenericCredentialsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGenericCredentialsResponse.ProtoReflect.Descriptor instead. func (*ListGenericCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{121} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{123} } func (x *ListGenericCredentialsResponse) GetCredentials() []*v11.Secret { @@ -7511,7 +7622,7 @@ type CreateGenericCredentialsRequest struct { func (x *CreateGenericCredentialsRequest) Reset() { *x = CreateGenericCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[122] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7524,7 +7635,7 @@ func (x *CreateGenericCredentialsRequest) String() string { func (*CreateGenericCredentialsRequest) ProtoMessage() {} func (x *CreateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[122] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7537,7 +7648,7 @@ func (x *CreateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGenericCredentialsRequest.ProtoReflect.Descriptor instead. func (*CreateGenericCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{122} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{124} } func (x *CreateGenericCredentialsRequest) GetSystemLevel() bool { @@ -7595,7 +7706,7 @@ type CreateGenericCredentialsResponse struct { func (x *CreateGenericCredentialsResponse) Reset() { *x = CreateGenericCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[123] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7608,7 +7719,7 @@ func (x *CreateGenericCredentialsResponse) String() string { func (*CreateGenericCredentialsResponse) ProtoMessage() {} func (x *CreateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[123] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7621,7 +7732,7 @@ func (x *CreateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGenericCredentialsResponse.ProtoReflect.Descriptor instead. func (*CreateGenericCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{123} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{125} } func (x *CreateGenericCredentialsResponse) GetCredentials() *v11.Secret { @@ -7658,7 +7769,7 @@ type UpdateGenericCredentialsRequest struct { func (x *UpdateGenericCredentialsRequest) Reset() { *x = UpdateGenericCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[124] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7671,7 +7782,7 @@ func (x *UpdateGenericCredentialsRequest) String() string { func (*UpdateGenericCredentialsRequest) ProtoMessage() {} func (x *UpdateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[124] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7684,7 +7795,7 @@ func (x *UpdateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGenericCredentialsRequest.ProtoReflect.Descriptor instead. func (*UpdateGenericCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{124} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{126} } func (x *UpdateGenericCredentialsRequest) GetSystemLevel() bool { @@ -7742,7 +7853,7 @@ type UpdateGenericCredentialsResponse struct { func (x *UpdateGenericCredentialsResponse) Reset() { *x = UpdateGenericCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[125] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7755,7 +7866,7 @@ func (x *UpdateGenericCredentialsResponse) String() string { func (*UpdateGenericCredentialsResponse) ProtoMessage() {} func (x *UpdateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[125] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7768,7 +7879,7 @@ func (x *UpdateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGenericCredentialsResponse.ProtoReflect.Descriptor instead. func (*UpdateGenericCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{125} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{127} } func (x *UpdateGenericCredentialsResponse) GetCredentials() *v11.Secret { @@ -7799,7 +7910,7 @@ type DeleteGenericCredentialsRequest struct { func (x *DeleteGenericCredentialsRequest) Reset() { *x = DeleteGenericCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[126] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7812,7 +7923,7 @@ func (x *DeleteGenericCredentialsRequest) String() string { func (*DeleteGenericCredentialsRequest) ProtoMessage() {} func (x *DeleteGenericCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[126] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7825,7 +7936,7 @@ func (x *DeleteGenericCredentialsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGenericCredentialsRequest.ProtoReflect.Descriptor instead. func (*DeleteGenericCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{126} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{128} } func (x *DeleteGenericCredentialsRequest) GetSystemLevel() bool { @@ -7859,7 +7970,7 @@ type DeleteGenericCredentialsResponse struct { func (x *DeleteGenericCredentialsResponse) Reset() { *x = DeleteGenericCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[127] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7872,7 +7983,7 @@ func (x *DeleteGenericCredentialsResponse) String() string { func (*DeleteGenericCredentialsResponse) ProtoMessage() {} func (x *DeleteGenericCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[127] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7885,7 +7996,7 @@ func (x *DeleteGenericCredentialsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGenericCredentialsResponse.ProtoReflect.Descriptor instead. func (*DeleteGenericCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{127} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{129} } // ListAnalysisTemplatesRequest is the request for listing all analysis templates in a project. @@ -7901,7 +8012,7 @@ type ListAnalysisTemplatesRequest struct { func (x *ListAnalysisTemplatesRequest) Reset() { *x = ListAnalysisTemplatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[128] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7914,7 +8025,7 @@ func (x *ListAnalysisTemplatesRequest) String() string { func (*ListAnalysisTemplatesRequest) ProtoMessage() {} func (x *ListAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[128] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7927,7 +8038,7 @@ func (x *ListAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAnalysisTemplatesRequest.ProtoReflect.Descriptor instead. func (*ListAnalysisTemplatesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{128} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{130} } func (x *ListAnalysisTemplatesRequest) GetProject() string { @@ -7950,7 +8061,7 @@ type ListAnalysisTemplatesResponse struct { func (x *ListAnalysisTemplatesResponse) Reset() { *x = ListAnalysisTemplatesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[129] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7963,7 +8074,7 @@ func (x *ListAnalysisTemplatesResponse) String() string { func (*ListAnalysisTemplatesResponse) ProtoMessage() {} func (x *ListAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[129] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7976,7 +8087,7 @@ func (x *ListAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAnalysisTemplatesResponse.ProtoReflect.Descriptor instead. func (*ListAnalysisTemplatesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{129} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{131} } func (x *ListAnalysisTemplatesResponse) GetAnalysisTemplates() []*v1alpha11.AnalysisTemplate { @@ -8003,7 +8114,7 @@ type GetAnalysisTemplateRequest struct { func (x *GetAnalysisTemplateRequest) Reset() { *x = GetAnalysisTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[130] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8016,7 +8127,7 @@ func (x *GetAnalysisTemplateRequest) String() string { func (*GetAnalysisTemplateRequest) ProtoMessage() {} func (x *GetAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[130] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8029,7 +8140,7 @@ func (x *GetAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAnalysisTemplateRequest.ProtoReflect.Descriptor instead. func (*GetAnalysisTemplateRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{130} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{132} } func (x *GetAnalysisTemplateRequest) GetProject() string { @@ -8069,7 +8180,7 @@ type GetAnalysisTemplateResponse struct { func (x *GetAnalysisTemplateResponse) Reset() { *x = GetAnalysisTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[131] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8082,7 +8193,7 @@ func (x *GetAnalysisTemplateResponse) String() string { func (*GetAnalysisTemplateResponse) ProtoMessage() {} func (x *GetAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[131] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8095,7 +8206,7 @@ func (x *GetAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAnalysisTemplateResponse.ProtoReflect.Descriptor instead. func (*GetAnalysisTemplateResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{131} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{133} } func (m *GetAnalysisTemplateResponse) GetResult() isGetAnalysisTemplateResponse_Result { @@ -8152,7 +8263,7 @@ type DeleteAnalysisTemplateRequest struct { func (x *DeleteAnalysisTemplateRequest) Reset() { *x = DeleteAnalysisTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[132] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8165,7 +8276,7 @@ func (x *DeleteAnalysisTemplateRequest) String() string { func (*DeleteAnalysisTemplateRequest) ProtoMessage() {} func (x *DeleteAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[132] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8178,7 +8289,7 @@ func (x *DeleteAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAnalysisTemplateRequest.ProtoReflect.Descriptor instead. func (*DeleteAnalysisTemplateRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{132} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{134} } func (x *DeleteAnalysisTemplateRequest) GetProject() string { @@ -8205,7 +8316,7 @@ type DeleteAnalysisTemplateResponse struct { func (x *DeleteAnalysisTemplateResponse) Reset() { *x = DeleteAnalysisTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[133] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8218,7 +8329,7 @@ func (x *DeleteAnalysisTemplateResponse) String() string { func (*DeleteAnalysisTemplateResponse) ProtoMessage() {} func (x *DeleteAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[133] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8231,7 +8342,7 @@ func (x *DeleteAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAnalysisTemplateResponse.ProtoReflect.Descriptor instead. func (*DeleteAnalysisTemplateResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{133} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{135} } // ListClusterAnalysisTemplatesRequest is the request for listing all cluster-level analysis templates. @@ -8244,7 +8355,7 @@ type ListClusterAnalysisTemplatesRequest struct { func (x *ListClusterAnalysisTemplatesRequest) Reset() { *x = ListClusterAnalysisTemplatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[134] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8257,7 +8368,7 @@ func (x *ListClusterAnalysisTemplatesRequest) String() string { func (*ListClusterAnalysisTemplatesRequest) ProtoMessage() {} func (x *ListClusterAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[134] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8270,7 +8381,7 @@ func (x *ListClusterAnalysisTemplatesRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use ListClusterAnalysisTemplatesRequest.ProtoReflect.Descriptor instead. func (*ListClusterAnalysisTemplatesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{134} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{136} } // ListClusterAnalysisTemplatesResponse contains a list of cluster-level analysis templates. @@ -8286,7 +8397,7 @@ type ListClusterAnalysisTemplatesResponse struct { func (x *ListClusterAnalysisTemplatesResponse) Reset() { *x = ListClusterAnalysisTemplatesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[135] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8299,7 +8410,7 @@ func (x *ListClusterAnalysisTemplatesResponse) String() string { func (*ListClusterAnalysisTemplatesResponse) ProtoMessage() {} func (x *ListClusterAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[135] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8312,7 +8423,7 @@ func (x *ListClusterAnalysisTemplatesResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use ListClusterAnalysisTemplatesResponse.ProtoReflect.Descriptor instead. func (*ListClusterAnalysisTemplatesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{135} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{137} } func (x *ListClusterAnalysisTemplatesResponse) GetClusterAnalysisTemplates() []*v1alpha11.ClusterAnalysisTemplate { @@ -8337,7 +8448,7 @@ type GetClusterAnalysisTemplateRequest struct { func (x *GetClusterAnalysisTemplateRequest) Reset() { *x = GetClusterAnalysisTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[136] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8350,7 +8461,7 @@ func (x *GetClusterAnalysisTemplateRequest) String() string { func (*GetClusterAnalysisTemplateRequest) ProtoMessage() {} func (x *GetClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[136] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8363,7 +8474,7 @@ func (x *GetClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetClusterAnalysisTemplateRequest.ProtoReflect.Descriptor instead. func (*GetClusterAnalysisTemplateRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{136} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{138} } func (x *GetClusterAnalysisTemplateRequest) GetName() string { @@ -8396,7 +8507,7 @@ type GetClusterAnalysisTemplateResponse struct { func (x *GetClusterAnalysisTemplateResponse) Reset() { *x = GetClusterAnalysisTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[137] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8409,7 +8520,7 @@ func (x *GetClusterAnalysisTemplateResponse) String() string { func (*GetClusterAnalysisTemplateResponse) ProtoMessage() {} func (x *GetClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[137] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8422,7 +8533,7 @@ func (x *GetClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetClusterAnalysisTemplateResponse.ProtoReflect.Descriptor instead. func (*GetClusterAnalysisTemplateResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{137} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{139} } func (m *GetClusterAnalysisTemplateResponse) GetResult() isGetClusterAnalysisTemplateResponse_Result { @@ -8478,7 +8589,7 @@ type DeleteClusterAnalysisTemplateRequest struct { func (x *DeleteClusterAnalysisTemplateRequest) Reset() { *x = DeleteClusterAnalysisTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[138] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8491,7 +8602,7 @@ func (x *DeleteClusterAnalysisTemplateRequest) String() string { func (*DeleteClusterAnalysisTemplateRequest) ProtoMessage() {} func (x *DeleteClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[138] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8504,7 +8615,7 @@ func (x *DeleteClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Messa // Deprecated: Use DeleteClusterAnalysisTemplateRequest.ProtoReflect.Descriptor instead. func (*DeleteClusterAnalysisTemplateRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{138} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{140} } func (x *DeleteClusterAnalysisTemplateRequest) GetName() string { @@ -8524,7 +8635,7 @@ type DeleteClusterAnalysisTemplateResponse struct { func (x *DeleteClusterAnalysisTemplateResponse) Reset() { *x = DeleteClusterAnalysisTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[139] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8537,7 +8648,7 @@ func (x *DeleteClusterAnalysisTemplateResponse) String() string { func (*DeleteClusterAnalysisTemplateResponse) ProtoMessage() {} func (x *DeleteClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[139] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8550,7 +8661,7 @@ func (x *DeleteClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Mess // Deprecated: Use DeleteClusterAnalysisTemplateResponse.ProtoReflect.Descriptor instead. func (*DeleteClusterAnalysisTemplateResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{139} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{141} } // GetAnalysisRunRequest is the request for retrieving a specific analysis run. @@ -8570,7 +8681,7 @@ type GetAnalysisRunRequest struct { func (x *GetAnalysisRunRequest) Reset() { *x = GetAnalysisRunRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[140] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8583,7 +8694,7 @@ func (x *GetAnalysisRunRequest) String() string { func (*GetAnalysisRunRequest) ProtoMessage() {} func (x *GetAnalysisRunRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[140] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8596,7 +8707,7 @@ func (x *GetAnalysisRunRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAnalysisRunRequest.ProtoReflect.Descriptor instead. func (*GetAnalysisRunRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{140} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{142} } func (x *GetAnalysisRunRequest) GetNamespace() string { @@ -8636,7 +8747,7 @@ type GetAnalysisRunResponse struct { func (x *GetAnalysisRunResponse) Reset() { *x = GetAnalysisRunResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[141] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8649,7 +8760,7 @@ func (x *GetAnalysisRunResponse) String() string { func (*GetAnalysisRunResponse) ProtoMessage() {} func (x *GetAnalysisRunResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[141] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8662,7 +8773,7 @@ func (x *GetAnalysisRunResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAnalysisRunResponse.ProtoReflect.Descriptor instead. func (*GetAnalysisRunResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{141} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{143} } func (m *GetAnalysisRunResponse) GetResult() isGetAnalysisRunResponse_Result { @@ -8723,7 +8834,7 @@ type GetAnalysisRunLogsRequest struct { func (x *GetAnalysisRunLogsRequest) Reset() { *x = GetAnalysisRunLogsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[142] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8736,7 +8847,7 @@ func (x *GetAnalysisRunLogsRequest) String() string { func (*GetAnalysisRunLogsRequest) ProtoMessage() {} func (x *GetAnalysisRunLogsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[142] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8749,7 +8860,7 @@ func (x *GetAnalysisRunLogsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAnalysisRunLogsRequest.ProtoReflect.Descriptor instead. func (*GetAnalysisRunLogsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{142} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{144} } func (x *GetAnalysisRunLogsRequest) GetNamespace() string { @@ -8793,7 +8904,7 @@ type GetAnalysisRunLogsResponse struct { func (x *GetAnalysisRunLogsResponse) Reset() { *x = GetAnalysisRunLogsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[143] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8806,7 +8917,7 @@ func (x *GetAnalysisRunLogsResponse) String() string { func (*GetAnalysisRunLogsResponse) ProtoMessage() {} func (x *GetAnalysisRunLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[143] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8819,7 +8930,7 @@ func (x *GetAnalysisRunLogsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAnalysisRunLogsResponse.ProtoReflect.Descriptor instead. func (*GetAnalysisRunLogsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{143} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{145} } func (x *GetAnalysisRunLogsResponse) GetChunk() string { @@ -8842,7 +8953,7 @@ type ListProjectEventsRequest struct { func (x *ListProjectEventsRequest) Reset() { *x = ListProjectEventsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[144] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8855,7 +8966,7 @@ func (x *ListProjectEventsRequest) String() string { func (*ListProjectEventsRequest) ProtoMessage() {} func (x *ListProjectEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[144] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8868,7 +8979,7 @@ func (x *ListProjectEventsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProjectEventsRequest.ProtoReflect.Descriptor instead. func (*ListProjectEventsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{144} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{146} } func (x *ListProjectEventsRequest) GetProject() string { @@ -8891,7 +9002,7 @@ type ListProjectEventsResponse struct { func (x *ListProjectEventsResponse) Reset() { *x = ListProjectEventsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[145] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8904,7 +9015,7 @@ func (x *ListProjectEventsResponse) String() string { func (*ListProjectEventsResponse) ProtoMessage() {} func (x *ListProjectEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[145] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8917,7 +9028,7 @@ func (x *ListProjectEventsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListProjectEventsResponse.ProtoReflect.Descriptor instead. func (*ListProjectEventsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{145} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{147} } func (x *ListProjectEventsResponse) GetEvents() []*v11.Event { @@ -8940,7 +9051,7 @@ type ListPromotionTasksRequest struct { func (x *ListPromotionTasksRequest) Reset() { *x = ListPromotionTasksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[146] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8953,7 +9064,7 @@ func (x *ListPromotionTasksRequest) String() string { func (*ListPromotionTasksRequest) ProtoMessage() {} func (x *ListPromotionTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[146] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8966,7 +9077,7 @@ func (x *ListPromotionTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPromotionTasksRequest.ProtoReflect.Descriptor instead. func (*ListPromotionTasksRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{146} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{148} } func (x *ListPromotionTasksRequest) GetProject() string { @@ -8989,7 +9100,7 @@ type ListPromotionTasksResponse struct { func (x *ListPromotionTasksResponse) Reset() { *x = ListPromotionTasksResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[147] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9002,7 +9113,7 @@ func (x *ListPromotionTasksResponse) String() string { func (*ListPromotionTasksResponse) ProtoMessage() {} func (x *ListPromotionTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[147] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9015,7 +9126,7 @@ func (x *ListPromotionTasksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPromotionTasksResponse.ProtoReflect.Descriptor instead. func (*ListPromotionTasksResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{147} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{149} } func (x *ListPromotionTasksResponse) GetPromotionTasks() []*v1alpha1.PromotionTask { @@ -9042,7 +9153,7 @@ type GetPromotionTaskRequest struct { func (x *GetPromotionTaskRequest) Reset() { *x = GetPromotionTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[148] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9055,7 +9166,7 @@ func (x *GetPromotionTaskRequest) String() string { func (*GetPromotionTaskRequest) ProtoMessage() {} func (x *GetPromotionTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[148] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9068,7 +9179,7 @@ func (x *GetPromotionTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPromotionTaskRequest.ProtoReflect.Descriptor instead. func (*GetPromotionTaskRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{148} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{150} } func (x *GetPromotionTaskRequest) GetProject() string { @@ -9108,7 +9219,7 @@ type GetPromotionTaskResponse struct { func (x *GetPromotionTaskResponse) Reset() { *x = GetPromotionTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[149] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9121,7 +9232,7 @@ func (x *GetPromotionTaskResponse) String() string { func (*GetPromotionTaskResponse) ProtoMessage() {} func (x *GetPromotionTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[149] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9134,7 +9245,7 @@ func (x *GetPromotionTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPromotionTaskResponse.ProtoReflect.Descriptor instead. func (*GetPromotionTaskResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{149} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{151} } func (m *GetPromotionTaskResponse) GetResult() isGetPromotionTaskResponse_Result { @@ -9186,7 +9297,7 @@ type ListClusterPromotionTasksRequest struct { func (x *ListClusterPromotionTasksRequest) Reset() { *x = ListClusterPromotionTasksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[150] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9199,7 +9310,7 @@ func (x *ListClusterPromotionTasksRequest) String() string { func (*ListClusterPromotionTasksRequest) ProtoMessage() {} func (x *ListClusterPromotionTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[150] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9212,7 +9323,7 @@ func (x *ListClusterPromotionTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClusterPromotionTasksRequest.ProtoReflect.Descriptor instead. func (*ListClusterPromotionTasksRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{150} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{152} } // ListClusterPromotionTasksResponse contains a list of cluster-level promotion tasks. @@ -9228,7 +9339,7 @@ type ListClusterPromotionTasksResponse struct { func (x *ListClusterPromotionTasksResponse) Reset() { *x = ListClusterPromotionTasksResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[151] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9241,7 +9352,7 @@ func (x *ListClusterPromotionTasksResponse) String() string { func (*ListClusterPromotionTasksResponse) ProtoMessage() {} func (x *ListClusterPromotionTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[151] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9254,7 +9365,7 @@ func (x *ListClusterPromotionTasksResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ListClusterPromotionTasksResponse.ProtoReflect.Descriptor instead. func (*ListClusterPromotionTasksResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{151} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{153} } func (x *ListClusterPromotionTasksResponse) GetClusterPromotionTasks() []*v1alpha1.ClusterPromotionTask { @@ -9279,7 +9390,7 @@ type GetClusterPromotionTaskRequest struct { func (x *GetClusterPromotionTaskRequest) Reset() { *x = GetClusterPromotionTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[152] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9292,7 +9403,7 @@ func (x *GetClusterPromotionTaskRequest) String() string { func (*GetClusterPromotionTaskRequest) ProtoMessage() {} func (x *GetClusterPromotionTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[152] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9305,7 +9416,7 @@ func (x *GetClusterPromotionTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterPromotionTaskRequest.ProtoReflect.Descriptor instead. func (*GetClusterPromotionTaskRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{152} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{154} } func (x *GetClusterPromotionTaskRequest) GetName() string { @@ -9338,7 +9449,7 @@ type GetClusterPromotionTaskResponse struct { func (x *GetClusterPromotionTaskResponse) Reset() { *x = GetClusterPromotionTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[153] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9351,7 +9462,7 @@ func (x *GetClusterPromotionTaskResponse) String() string { func (*GetClusterPromotionTaskResponse) ProtoMessage() {} func (x *GetClusterPromotionTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[153] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9364,7 +9475,7 @@ func (x *GetClusterPromotionTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterPromotionTaskResponse.ProtoReflect.Descriptor instead. func (*GetClusterPromotionTaskResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{153} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{155} } func (m *GetClusterPromotionTaskResponse) GetResult() isGetClusterPromotionTaskResponse_Result { @@ -9420,7 +9531,7 @@ type CreateRoleRequest struct { func (x *CreateRoleRequest) Reset() { *x = CreateRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[154] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9433,7 +9544,7 @@ func (x *CreateRoleRequest) String() string { func (*CreateRoleRequest) ProtoMessage() {} func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[154] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9446,7 +9557,7 @@ func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRoleRequest.ProtoReflect.Descriptor instead. func (*CreateRoleRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{154} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{156} } func (x *CreateRoleRequest) GetRole() *v1alpha12.Role { @@ -9470,7 +9581,7 @@ type CreateRoleResponse struct { func (x *CreateRoleResponse) Reset() { *x = CreateRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[155] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9483,7 +9594,7 @@ func (x *CreateRoleResponse) String() string { func (*CreateRoleResponse) ProtoMessage() {} func (x *CreateRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[155] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9496,7 +9607,7 @@ func (x *CreateRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRoleResponse.ProtoReflect.Descriptor instead. func (*CreateRoleResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{155} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{157} } func (x *CreateRoleResponse) GetRole() *v1alpha12.Role { @@ -9522,7 +9633,7 @@ type DeleteRoleRequest struct { func (x *DeleteRoleRequest) Reset() { *x = DeleteRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[156] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9535,7 +9646,7 @@ func (x *DeleteRoleRequest) String() string { func (*DeleteRoleRequest) ProtoMessage() {} func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[156] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9548,7 +9659,7 @@ func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRoleRequest.ProtoReflect.Descriptor instead. func (*DeleteRoleRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{156} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{158} } func (x *DeleteRoleRequest) GetProject() string { @@ -9576,7 +9687,7 @@ type DeleteRoleResponse struct { func (x *DeleteRoleResponse) Reset() { *x = DeleteRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[157] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9589,7 +9700,7 @@ func (x *DeleteRoleResponse) String() string { func (*DeleteRoleResponse) ProtoMessage() {} func (x *DeleteRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[157] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9602,7 +9713,7 @@ func (x *DeleteRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRoleResponse.ProtoReflect.Descriptor instead. func (*DeleteRoleResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{157} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{159} } // GetRoleRequest is a request to retrieve the details of a Kargo Role virtual @@ -9631,7 +9742,7 @@ type GetRoleRequest struct { func (x *GetRoleRequest) Reset() { *x = GetRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[158] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9644,7 +9755,7 @@ func (x *GetRoleRequest) String() string { func (*GetRoleRequest) ProtoMessage() {} func (x *GetRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[158] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9657,7 +9768,7 @@ func (x *GetRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRoleRequest.ProtoReflect.Descriptor instead. func (*GetRoleRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{158} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{160} } func (x *GetRoleRequest) GetSystemLevel() bool { @@ -9713,7 +9824,7 @@ type GetRoleResponse struct { func (x *GetRoleResponse) Reset() { *x = GetRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[159] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9726,7 +9837,7 @@ func (x *GetRoleResponse) String() string { func (*GetRoleResponse) ProtoMessage() {} func (x *GetRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[159] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9739,7 +9850,7 @@ func (x *GetRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRoleResponse.ProtoReflect.Descriptor instead. func (*GetRoleResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{159} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{161} } func (m *GetRoleResponse) GetResult() isGetRoleResponse_Result { @@ -9810,7 +9921,7 @@ type Claims struct { func (x *Claims) Reset() { *x = Claims{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[160] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9823,7 +9934,7 @@ func (x *Claims) String() string { func (*Claims) ProtoMessage() {} func (x *Claims) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[160] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9836,7 +9947,7 @@ func (x *Claims) ProtoReflect() protoreflect.Message { // Deprecated: Use Claims.ProtoReflect.Descriptor instead. func (*Claims) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{160} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{162} } func (x *Claims) GetClaims() []*v1alpha12.Claim { @@ -9869,7 +9980,7 @@ type GrantRequest struct { func (x *GrantRequest) Reset() { *x = GrantRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[161] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9882,7 +9993,7 @@ func (x *GrantRequest) String() string { func (*GrantRequest) ProtoMessage() {} func (x *GrantRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[161] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9895,7 +10006,7 @@ func (x *GrantRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GrantRequest.ProtoReflect.Descriptor instead. func (*GrantRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{161} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{163} } func (x *GrantRequest) GetProject() string { @@ -9966,7 +10077,7 @@ type GrantResponse struct { func (x *GrantResponse) Reset() { *x = GrantResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[162] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9979,7 +10090,7 @@ func (x *GrantResponse) String() string { func (*GrantResponse) ProtoMessage() {} func (x *GrantResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[162] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9992,7 +10103,7 @@ func (x *GrantResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GrantResponse.ProtoReflect.Descriptor instead. func (*GrantResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{162} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{164} } func (x *GrantResponse) GetRole() *v1alpha12.Role { @@ -10022,7 +10133,7 @@ type ListRolesRequest struct { func (x *ListRolesRequest) Reset() { *x = ListRolesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[163] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10035,7 +10146,7 @@ func (x *ListRolesRequest) String() string { func (*ListRolesRequest) ProtoMessage() {} func (x *ListRolesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[163] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10048,7 +10159,7 @@ func (x *ListRolesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRolesRequest.ProtoReflect.Descriptor instead. func (*ListRolesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{163} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{165} } func (x *ListRolesRequest) GetSystemLevel() bool { @@ -10090,7 +10201,7 @@ type ListRolesResponse struct { func (x *ListRolesResponse) Reset() { *x = ListRolesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[164] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10103,7 +10214,7 @@ func (x *ListRolesResponse) String() string { func (*ListRolesResponse) ProtoMessage() {} func (x *ListRolesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[164] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10116,7 +10227,7 @@ func (x *ListRolesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRolesResponse.ProtoReflect.Descriptor instead. func (*ListRolesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{164} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{166} } func (x *ListRolesResponse) GetRoles() []*v1alpha12.Role { @@ -10156,7 +10267,7 @@ type RevokeRequest struct { func (x *RevokeRequest) Reset() { *x = RevokeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[165] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10169,7 +10280,7 @@ func (x *RevokeRequest) String() string { func (*RevokeRequest) ProtoMessage() {} func (x *RevokeRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[165] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10182,7 +10293,7 @@ func (x *RevokeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeRequest.ProtoReflect.Descriptor instead. func (*RevokeRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{165} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{167} } func (x *RevokeRequest) GetProject() string { @@ -10255,7 +10366,7 @@ type RevokeResponse struct { func (x *RevokeResponse) Reset() { *x = RevokeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[166] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10268,7 +10379,7 @@ func (x *RevokeResponse) String() string { func (*RevokeResponse) ProtoMessage() {} func (x *RevokeResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[166] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10281,7 +10392,7 @@ func (x *RevokeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeResponse.ProtoReflect.Descriptor instead. func (*RevokeResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{166} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{168} } func (x *RevokeResponse) GetRole() *v1alpha12.Role { @@ -10305,7 +10416,7 @@ type UpdateRoleRequest struct { func (x *UpdateRoleRequest) Reset() { *x = UpdateRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[167] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10318,7 +10429,7 @@ func (x *UpdateRoleRequest) String() string { func (*UpdateRoleRequest) ProtoMessage() {} func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[167] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10331,7 +10442,7 @@ func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRoleRequest.ProtoReflect.Descriptor instead. func (*UpdateRoleRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{167} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{169} } func (x *UpdateRoleRequest) GetRole() *v1alpha12.Role { @@ -10355,7 +10466,7 @@ type UpdateRoleResponse struct { func (x *UpdateRoleResponse) Reset() { *x = UpdateRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[168] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10368,7 +10479,7 @@ func (x *UpdateRoleResponse) String() string { func (*UpdateRoleResponse) ProtoMessage() {} func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[168] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[170] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10381,7 +10492,7 @@ func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRoleResponse.ProtoReflect.Descriptor instead. func (*UpdateRoleResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{168} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{170} } func (x *UpdateRoleResponse) GetRole() *v1alpha12.Role { @@ -10416,7 +10527,7 @@ type CreateAPITokenRequest struct { func (x *CreateAPITokenRequest) Reset() { *x = CreateAPITokenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[169] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10429,7 +10540,7 @@ func (x *CreateAPITokenRequest) String() string { func (*CreateAPITokenRequest) ProtoMessage() {} func (x *CreateAPITokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[169] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[171] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10442,7 +10553,7 @@ func (x *CreateAPITokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAPITokenRequest.ProtoReflect.Descriptor instead. func (*CreateAPITokenRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{169} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{171} } func (x *CreateAPITokenRequest) GetSystemLevel() bool { @@ -10487,7 +10598,7 @@ type CreateAPITokenResponse struct { func (x *CreateAPITokenResponse) Reset() { *x = CreateAPITokenResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[170] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10500,7 +10611,7 @@ func (x *CreateAPITokenResponse) String() string { func (*CreateAPITokenResponse) ProtoMessage() {} func (x *CreateAPITokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[170] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[172] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10513,7 +10624,7 @@ func (x *CreateAPITokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAPITokenResponse.ProtoReflect.Descriptor instead. func (*CreateAPITokenResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{170} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{172} } func (x *CreateAPITokenResponse) GetTokenSecret() *v11.Secret { @@ -10544,7 +10655,7 @@ type DeleteAPITokenRequest struct { func (x *DeleteAPITokenRequest) Reset() { *x = DeleteAPITokenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[171] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10557,7 +10668,7 @@ func (x *DeleteAPITokenRequest) String() string { func (*DeleteAPITokenRequest) ProtoMessage() {} func (x *DeleteAPITokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[171] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[173] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10570,7 +10681,7 @@ func (x *DeleteAPITokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAPITokenRequest.ProtoReflect.Descriptor instead. func (*DeleteAPITokenRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{171} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{173} } func (x *DeleteAPITokenRequest) GetSystemLevel() bool { @@ -10605,7 +10716,7 @@ type DeleteAPITokenResponse struct { func (x *DeleteAPITokenResponse) Reset() { *x = DeleteAPITokenResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[172] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10618,7 +10729,7 @@ func (x *DeleteAPITokenResponse) String() string { func (*DeleteAPITokenResponse) ProtoMessage() {} func (x *DeleteAPITokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[172] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[174] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10631,7 +10742,7 @@ func (x *DeleteAPITokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAPITokenResponse.ProtoReflect.Descriptor instead. func (*DeleteAPITokenResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{172} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{174} } // GetAPITokenRequest is a request to retrieve details of a bearer token @@ -10657,7 +10768,7 @@ type GetAPITokenRequest struct { func (x *GetAPITokenRequest) Reset() { *x = GetAPITokenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[173] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10670,7 +10781,7 @@ func (x *GetAPITokenRequest) String() string { func (*GetAPITokenRequest) ProtoMessage() {} func (x *GetAPITokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[173] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[175] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10683,7 +10794,7 @@ func (x *GetAPITokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAPITokenRequest.ProtoReflect.Descriptor instead. func (*GetAPITokenRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{173} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{175} } func (x *GetAPITokenRequest) GetSystemLevel() bool { @@ -10731,7 +10842,7 @@ type GetAPITokenResponse struct { func (x *GetAPITokenResponse) Reset() { *x = GetAPITokenResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[174] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10744,7 +10855,7 @@ func (x *GetAPITokenResponse) String() string { func (*GetAPITokenResponse) ProtoMessage() {} func (x *GetAPITokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[174] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[176] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10757,7 +10868,7 @@ func (x *GetAPITokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAPITokenResponse.ProtoReflect.Descriptor instead. func (*GetAPITokenResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{174} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{176} } func (m *GetAPITokenResponse) GetResult() isGetAPITokenResponse_Result { @@ -10820,7 +10931,7 @@ type ListAPITokensRequest struct { func (x *ListAPITokensRequest) Reset() { *x = ListAPITokensRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[175] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10833,7 +10944,7 @@ func (x *ListAPITokensRequest) String() string { func (*ListAPITokensRequest) ProtoMessage() {} func (x *ListAPITokensRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[175] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[177] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10846,7 +10957,7 @@ func (x *ListAPITokensRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAPITokensRequest.ProtoReflect.Descriptor instead. func (*ListAPITokensRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{175} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{177} } func (x *ListAPITokensRequest) GetSystemLevel() bool { @@ -10885,7 +10996,7 @@ type ListAPITokensResponse struct { func (x *ListAPITokensResponse) Reset() { *x = ListAPITokensResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[176] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10898,7 +11009,7 @@ func (x *ListAPITokensResponse) String() string { func (*ListAPITokensResponse) ProtoMessage() {} func (x *ListAPITokensResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[176] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[178] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10911,7 +11022,7 @@ func (x *ListAPITokensResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAPITokensResponse.ProtoReflect.Descriptor instead. func (*ListAPITokensResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{176} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{178} } func (x *ListAPITokensResponse) GetTokenSecrets() []*v11.Secret { @@ -10940,7 +11051,7 @@ type RefreshResourceRequest struct { func (x *RefreshResourceRequest) Reset() { *x = RefreshResourceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[177] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10953,7 +11064,7 @@ func (x *RefreshResourceRequest) String() string { func (*RefreshResourceRequest) ProtoMessage() {} func (x *RefreshResourceRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[177] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[179] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10966,7 +11077,7 @@ func (x *RefreshResourceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshResourceRequest.ProtoReflect.Descriptor instead. func (*RefreshResourceRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{177} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{179} } func (x *RefreshResourceRequest) GetProject() string { @@ -11001,7 +11112,7 @@ type RefreshResourceResponse struct { func (x *RefreshResourceResponse) Reset() { *x = RefreshResourceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[178] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11014,7 +11125,7 @@ func (x *RefreshResourceResponse) String() string { func (*RefreshResourceResponse) ProtoMessage() {} func (x *RefreshResourceResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[178] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[180] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11027,7 +11138,7 @@ func (x *RefreshResourceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshResourceResponse.ProtoReflect.Descriptor instead. func (*RefreshResourceResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{178} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{180} } func (x *RefreshResourceResponse) GetResource() *anypb.Any { @@ -11296,1819 +11407,1848 @@ var file_api_service_v1alpha1_service_proto_rawDesc = []byte{ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x42, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, + 0x75, 0x6c, 0x74, 0x22, 0x59, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xdc, + 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x79, 0x0a, 0x0e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x68, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x48, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x42, 0x0a, + 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x6c, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x42, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, 0x02, 0x0a, 0x0c, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x51, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x72, 0x79, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x65, 0x74, + 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x48, + 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x4b, + 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x48, 0x01, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x48, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x70, 0x65, 0x63, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0xe8, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x61, 0x0a, 0x11, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x10, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x30, 0x0a, + 0x14, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x70, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x29, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xca, 0x05, 0x0a, 0x12, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x12, 0x4f, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x6b, 0x67, 0x2e, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x12, 0x65, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x11, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x48, 0x01, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x64, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x02, 0x52, 0x0d, 0x6c, 0x61, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, + 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x48, 0x03, 0x52, 0x06, 0x68, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x62, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x61, 0x75, 0x74, + 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0x5e, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, + 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xa0, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, + 0x0e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, + 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9e, 0x01, 0x0a, 0x1a, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x6c, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x42, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xa2, 0x02, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x12, 0x51, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, + 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9d, 0x01, 0x0a, 0x1b, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x01, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x88, 0x01, - 0x01, 0x12, 0x51, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, - 0x70, 0x65, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, - 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, - 0x12, 0x61, 0x0a, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x46, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x65, 0x72, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0f, 0x68, 0x61, 0x73, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0xca, 0x05, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x4f, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x38, - 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x72, - 0x79, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x64, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x65, 0x0a, 0x0f, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x6a, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x01, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x64, 0x0a, - 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x5e, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, + 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8c, + 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, + 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, - 0x02, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, + 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x48, 0x03, 0x52, 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, - 0x0a, 0x13, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6f, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x34, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x14, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0x5e, 0x0a, - 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x57, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xa0, 0x01, - 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0f, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x22, 0x9e, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, - 0x0f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0x9d, 0x01, 0x0a, 0x1b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x67, - 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x22, 0x5e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, - 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x70, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, - 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x69, 0x0a, 0x16, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x45, 0x0a, 0x15, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x7b, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x45, + 0x0a, 0x15, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x2a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x57, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, - 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, - 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x22, 0x45, 0x0a, 0x15, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x22, 0x45, 0x0a, 0x15, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, - 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x11, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x70, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, + 0x01, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x03, 0x52, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6d, 0x69, 0x6e, 0x65, 0x22, 0x77, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x49, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x22, 0x78, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, - 0x01, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x69, 0x6e, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x88, - 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x69, 0x6e, 0x65, 0x22, 0x77, 0x0a, - 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x78, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, - 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, - 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, - 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, - 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x0a, 0x19, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x35, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x71, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, - 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, - 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, - 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, - 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x48, 0x00, 0x52, - 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2f, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x73, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, - 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x86, 0x01, 0x0a, - 0x15, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x67, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, - 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, - 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x6c, 0x0a, 0x19, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x5a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x22, 0x71, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x0a, + 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x43, 0x0a, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x48, 0x00, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x2f, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x22, 0x73, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, - 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x18, 0x0a, 0x07, - 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, - 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, - 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x06, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x68, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x56, 0x0a, 0x0b, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, - 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, - 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, + 0x67, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1c, 0x0a, - 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x0f, 0x52, - 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x12, - 0x0a, 0x10, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x22, 0x6c, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, + 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, + 0x68, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x0b, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x22, 0x83, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, + 0x09, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, + 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, + 0x65, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x0f, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, + 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x41, 0x62, 0x6f, 0x72, + 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x1b, - 0x0a, 0x19, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x0a, 0x15, 0x4c, - 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x69, - 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x77, 0x61, 0x72, 0x65, - 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, + 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, + 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, + 0x73, 0x65, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, + 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, + 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, + 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, 0x77, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x46, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7c, + 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, - 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, - 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, - 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, - 0x65, 0x48, 0x00, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, - 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, - 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x46, 0x0a, 0x16, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, + 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x16, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, - 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, - 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x22, 0x46, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, - 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xba, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, - 0x61, 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, 0x57, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, - 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, - 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x69, 0x0a, 0x16, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x54, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, - 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, + 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xba, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x58, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, - 0x73, 0x22, 0xab, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, - 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, - 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, - 0x74, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x57, 0x0a, 0x17, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xba, 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, - 0x61, 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, 0x57, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, - 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, - 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x80, 0x02, 0x0a, 0x1c, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, - 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, - 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, - 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x4c, 0x0a, - 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x69, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x15, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x22, 0x58, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, + 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, + 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x13, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, + 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0xba, 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, - 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7a, 0x0a, - 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, - 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, - 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x57, 0x0a, 0x17, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, + 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x80, 0x02, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, + 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, + 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, + 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, + 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x4c, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x22, 0x5b, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x80, - 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, + 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5b, 0x0a, 0x1b, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x80, 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, + 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, + 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, + 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x5c, 0x0a, 0x1d, 0x4c, 0x69, + 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5e, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, + 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, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, - 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, - 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, - 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x22, 0x5c, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, + 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, + 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5e, - 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, - 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, 0x0a, - 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, - 0xcc, 0x02, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, - 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, - 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, + 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x72, 0x0a, 0x1f, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, + 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x22, + 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x22, 0x72, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, - 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x22, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x73, 0x65, 0x22, 0x38, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x95, 0x01, 0x0a, + 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, + 0x0a, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, + 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x10, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, + 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, + 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x4d, 0x0a, 0x1d, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1a, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1a, 0x47, - 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xb1, 0x01, 0x0a, - 0x1b, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x11, - 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, - 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, - 0x52, 0x10, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, - 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x22, 0x4d, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x25, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, - 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x18, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x7c, - 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xcf, 0x01, 0x0a, - 0x22, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x19, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, - 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x18, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x7c, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xcf, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, + 0x0a, 0x19, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, + 0x00, 0x52, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, + 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, + 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x3a, 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x9d, + 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0c, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x40, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, + 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, + 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, - 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x3a, - 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x25, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, + 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, + 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x34, 0x0a, 0x18, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x22, 0x4e, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, + 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x22, 0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0d, + 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, + 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, + 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x22, 0x0a, 0x20, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x97, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x52, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x79, 0x0a, 0x1e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x65, 0x0a, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x72, 0x6d, 0x61, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x14, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x58, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x1a, - 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, - 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, - 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, - 0x22, 0x34, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x4e, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x7a, 0x0a, - 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x70, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x22, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x17, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, - 0x79, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x1f, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, - 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x48, 0x00, 0x52, 0x14, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, - 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, - 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x58, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, - 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, 0x0a, - 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a, - 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x58, 0x0a, - 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x52, 0x0a, 0x06, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, - 0x48, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x30, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, - 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, - 0x6d, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x47, 0x72, - 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, - 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, - 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, - 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x54, 0x0a, 0x0d, 0x47, 0x72, 0x61, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, - 0x72, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xc9, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x6f, 0x6c, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, - 0x12, 0x56, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, - 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, - 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, - 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x0e, 0x52, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, - 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xd0, 0x01, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x45, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, + 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x48, + 0x00, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, + 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0x52, 0x0a, 0x06, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x06, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x73, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, + 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x54, 0x0a, 0x0d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x72, 0x0a, 0x10, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, + 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xb2, 0x01, + 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x09, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, + 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, + 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, - 0x22, 0x58, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x0e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, - 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x58, 0x0a, 0x11, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, + 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, + 0x85, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x22, 0x68, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x22, 0x74, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x70, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, - 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x68, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, - 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x74, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x50, - 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, - 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x48, 0x00, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, - 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, - 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x70, 0x0a, - 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, - 0x58, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0c, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x6b, 0x0a, 0x16, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x17, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x2a, 0x51, 0x0a, 0x09, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, - 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, - 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, - 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x02, 0x32, 0xd3, 0x58, 0x0a, 0x0c, 0x4b, 0x61, 0x72, 0x67, 0x6f, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, - 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x15, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, + 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x73, 0x22, 0x6b, 0x0a, 0x16, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x22, 0x4b, 0x0a, 0x17, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2a, 0x51, 0x0a, + 0x09, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x41, + 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, + 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, + 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x02, + 0x32, 0xee, 0x59, 0x0a, 0x0c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, - 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, + 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, + 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x86, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, - 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3b, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x30, 0x01, 0x12, 0x94, 0x01, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3c, 0x2e, 0x61, 0x6b, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x98, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7a, 0x0a, 0x0b, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0b, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, + 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x94, 0x01, 0x0a, 0x13, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, + 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, + 0x7a, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x34, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, + 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, + 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x85, 0x01, 0x0a, 0x0e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x62, 0x6f, + 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, + 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, + 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x0c, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x0e, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, + 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, + 0x01, 0x0a, 0x0e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x7f, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, + 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3a, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, + 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x52, 0x65, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, 0x61, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x41, + 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x70, - 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, 0x61, + 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, + 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, - 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, - 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, - 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, + 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, - 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x31, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, - 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, - 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, - 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, - 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x38, 0x2e, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, + 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, + 0x65, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, + 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, - 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, - 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, - 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, + 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3c, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, + 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x6c, 0x73, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, - 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, + 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x98, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x4c, + 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x86, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, + 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 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, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 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, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4d, 0x61, 0x70, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x98, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x47, - 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x9b, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, + 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, + 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 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, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xad, 0x01, - 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x45, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa7, 0x01, - 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x2e, 0x61, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x44, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, + 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, + 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x47, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x37, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x91, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3e, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x92, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa4, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x73, 0x12, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, + 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0xad, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x12, 0x45, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0xa7, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x12, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb0, 0x01, 0x0a, + 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x46, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x47, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, + 0x75, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x3b, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, + 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, + 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, + 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa4, 0x01, 0x0a, 0x19, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x61, 0x73, 0x6b, 0x12, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9e, 0x01, + 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, + 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, - 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x07, 0x47, - 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, - 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x05, 0x47, - 0x72, 0x61, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x06, 0x52, - 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, + 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x6e, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, - 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a, 0x0a, - 0x0b, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x34, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x36, 0x2e, 0x61, 0x6b, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x68, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x93, 0x02, 0x0a, - 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x6b, 0x0a, 0x06, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x2f, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, + 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, + 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2f, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x3b, 0x73, 0x76, 0x63, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, - 0x02, 0x04, 0x41, 0x49, 0x4b, 0x53, 0xaa, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x49, 0x6f, 0x2e, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x2c, 0x41, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x24, 0x41, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x3a, 0x3a, 0x49, 0x6f, 0x3a, 0x3a, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x3a, - 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, + 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, + 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x7a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, + 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, + 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x42, 0x93, 0x02, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2f, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x73, 0x76, 0x63, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x04, 0x41, 0x49, 0x4b, 0x53, 0xaa, 0x02, 0x20, 0x41, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x6f, 0x2e, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, + 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, + 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0xe2, 0x02, 0x2c, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, + 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x24, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x3a, 0x3a, 0x49, 0x6f, 0x3a, 0x3a, 0x4b, + 0x61, 0x72, 0x67, 0x6f, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x3a, 0x56, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -13124,7 +13264,7 @@ func file_api_service_v1alpha1_service_proto_rawDescGZIP() []byte { } var file_api_service_v1alpha1_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_api_service_v1alpha1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 188) +var file_api_service_v1alpha1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 191) var file_api_service_v1alpha1_service_proto_goTypes = []interface{}{ (RawFormat)(0), // 0: akuity.io.kargo.service.v1alpha1.RawFormat (*ComponentVersions)(nil), // 1: akuity.io.kargo.service.v1alpha1.ComponentVersions @@ -13159,470 +13299,476 @@ var file_api_service_v1alpha1_service_proto_goTypes = []interface{}{ (*ImageStageMap)(nil), // 30: akuity.io.kargo.service.v1alpha1.ImageStageMap (*GetStageRequest)(nil), // 31: akuity.io.kargo.service.v1alpha1.GetStageRequest (*GetStageResponse)(nil), // 32: akuity.io.kargo.service.v1alpha1.GetStageResponse - (*WatchStagesRequest)(nil), // 33: akuity.io.kargo.service.v1alpha1.WatchStagesRequest - (*WatchStagesResponse)(nil), // 34: akuity.io.kargo.service.v1alpha1.WatchStagesResponse - (*DeleteStageRequest)(nil), // 35: akuity.io.kargo.service.v1alpha1.DeleteStageRequest - (*DeleteStageResponse)(nil), // 36: akuity.io.kargo.service.v1alpha1.DeleteStageResponse - (*StageSummary)(nil), // 37: akuity.io.kargo.service.v1alpha1.StageSummary - (*StageSpecSummary)(nil), // 38: akuity.io.kargo.service.v1alpha1.StageSpecSummary - (*StageStatusSummary)(nil), // 39: akuity.io.kargo.service.v1alpha1.StageStatusSummary - (*ListStageSummariesRequest)(nil), // 40: akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest - (*ListStageSummariesResponse)(nil), // 41: akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse - (*WatchStageSummariesRequest)(nil), // 42: akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest - (*WatchStageSummariesResponse)(nil), // 43: akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse - (*GetClusterConfigRequest)(nil), // 44: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest - (*GetClusterConfigResponse)(nil), // 45: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse - (*DeleteClusterConfigRequest)(nil), // 46: akuity.io.kargo.service.v1alpha1.DeleteClusterConfigRequest - (*DeleteClusterConfigResponse)(nil), // 47: akuity.io.kargo.service.v1alpha1.DeleteClusterConfigResponse - (*WatchClusterConfigRequest)(nil), // 48: akuity.io.kargo.service.v1alpha1.WatchClusterConfigRequest - (*WatchClusterConfigResponse)(nil), // 49: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse - (*ListPromotionsRequest)(nil), // 50: akuity.io.kargo.service.v1alpha1.ListPromotionsRequest - (*ListPromotionsResponse)(nil), // 51: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse - (*WatchPromotionsRequest)(nil), // 52: akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest - (*WatchPromotionsResponse)(nil), // 53: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse - (*GetPromotionRequest)(nil), // 54: akuity.io.kargo.service.v1alpha1.GetPromotionRequest - (*GetPromotionResponse)(nil), // 55: akuity.io.kargo.service.v1alpha1.GetPromotionResponse - (*WatchPromotionRequest)(nil), // 56: akuity.io.kargo.service.v1alpha1.WatchPromotionRequest - (*WatchPromotionResponse)(nil), // 57: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse - (*AbortPromotionRequest)(nil), // 58: akuity.io.kargo.service.v1alpha1.AbortPromotionRequest - (*AbortPromotionResponse)(nil), // 59: akuity.io.kargo.service.v1alpha1.AbortPromotionResponse - (*DeleteProjectRequest)(nil), // 60: akuity.io.kargo.service.v1alpha1.DeleteProjectRequest - (*DeleteProjectResponse)(nil), // 61: akuity.io.kargo.service.v1alpha1.DeleteProjectResponse - (*GetProjectRequest)(nil), // 62: akuity.io.kargo.service.v1alpha1.GetProjectRequest - (*GetProjectResponse)(nil), // 63: akuity.io.kargo.service.v1alpha1.GetProjectResponse - (*ListProjectsRequest)(nil), // 64: akuity.io.kargo.service.v1alpha1.ListProjectsRequest - (*ListProjectsResponse)(nil), // 65: akuity.io.kargo.service.v1alpha1.ListProjectsResponse - (*GetProjectConfigRequest)(nil), // 66: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest - (*GetProjectConfigResponse)(nil), // 67: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse - (*DeleteProjectConfigRequest)(nil), // 68: akuity.io.kargo.service.v1alpha1.DeleteProjectConfigRequest - (*DeleteProjectConfigResponse)(nil), // 69: akuity.io.kargo.service.v1alpha1.DeleteProjectConfigResponse - (*WatchProjectConfigRequest)(nil), // 70: akuity.io.kargo.service.v1alpha1.WatchProjectConfigRequest - (*WatchProjectConfigResponse)(nil), // 71: akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse - (*ApproveFreightRequest)(nil), // 72: akuity.io.kargo.service.v1alpha1.ApproveFreightRequest - (*ApproveFreightResponse)(nil), // 73: akuity.io.kargo.service.v1alpha1.ApproveFreightResponse - (*DeleteFreightRequest)(nil), // 74: akuity.io.kargo.service.v1alpha1.DeleteFreightRequest - (*DeleteFreightResponse)(nil), // 75: akuity.io.kargo.service.v1alpha1.DeleteFreightResponse - (*GetFreightRequest)(nil), // 76: akuity.io.kargo.service.v1alpha1.GetFreightRequest - (*GetFreightResponse)(nil), // 77: akuity.io.kargo.service.v1alpha1.GetFreightResponse - (*WatchFreightRequest)(nil), // 78: akuity.io.kargo.service.v1alpha1.WatchFreightRequest - (*WatchFreightResponse)(nil), // 79: akuity.io.kargo.service.v1alpha1.WatchFreightResponse - (*PromoteToStageRequest)(nil), // 80: akuity.io.kargo.service.v1alpha1.PromoteToStageRequest - (*PromoteToStageResponse)(nil), // 81: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse - (*PromoteDownstreamRequest)(nil), // 82: akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest - (*PromoteDownstreamResponse)(nil), // 83: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse - (*QueryFreightRequest)(nil), // 84: akuity.io.kargo.service.v1alpha1.QueryFreightRequest - (*QueryFreightResponse)(nil), // 85: akuity.io.kargo.service.v1alpha1.QueryFreightResponse - (*FreightList)(nil), // 86: akuity.io.kargo.service.v1alpha1.FreightList - (*UpdateFreightAliasRequest)(nil), // 87: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest - (*UpdateFreightAliasResponse)(nil), // 88: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse - (*ReverifyRequest)(nil), // 89: akuity.io.kargo.service.v1alpha1.ReverifyRequest - (*ReverifyResponse)(nil), // 90: akuity.io.kargo.service.v1alpha1.ReverifyResponse - (*AbortVerificationRequest)(nil), // 91: akuity.io.kargo.service.v1alpha1.AbortVerificationRequest - (*AbortVerificationResponse)(nil), // 92: akuity.io.kargo.service.v1alpha1.AbortVerificationResponse - (*ListWarehousesRequest)(nil), // 93: akuity.io.kargo.service.v1alpha1.ListWarehousesRequest - (*ListWarehousesResponse)(nil), // 94: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse - (*GetWarehouseRequest)(nil), // 95: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest - (*GetWarehouseResponse)(nil), // 96: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse - (*WatchWarehousesRequest)(nil), // 97: akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest - (*WatchWarehousesResponse)(nil), // 98: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse - (*DeleteWarehouseRequest)(nil), // 99: akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest - (*DeleteWarehouseResponse)(nil), // 100: akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse - (*CreateConfigMapRequest)(nil), // 101: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest - (*CreateConfigMapResponse)(nil), // 102: akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse - (*DeleteConfigMapRequest)(nil), // 103: akuity.io.kargo.service.v1alpha1.DeleteConfigMapRequest - (*DeleteConfigMapResponse)(nil), // 104: akuity.io.kargo.service.v1alpha1.DeleteConfigMapResponse - (*ListConfigMapsRequest)(nil), // 105: akuity.io.kargo.service.v1alpha1.ListConfigMapsRequest - (*ListConfigMapsResponse)(nil), // 106: akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse - (*GetConfigMapRequest)(nil), // 107: akuity.io.kargo.service.v1alpha1.GetConfigMapRequest - (*GetConfigMapResponse)(nil), // 108: akuity.io.kargo.service.v1alpha1.GetConfigMapResponse - (*UpdateConfigMapRequest)(nil), // 109: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest - (*UpdateConfigMapResponse)(nil), // 110: akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse - (*CreateRepoCredentialsRequest)(nil), // 111: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsRequest - (*CreateRepoCredentialsResponse)(nil), // 112: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse - (*DeleteRepoCredentialsRequest)(nil), // 113: akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsRequest - (*DeleteRepoCredentialsResponse)(nil), // 114: akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsResponse - (*GetRepoCredentialsRequest)(nil), // 115: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest - (*GetRepoCredentialsResponse)(nil), // 116: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse - (*ListRepoCredentialsRequest)(nil), // 117: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsRequest - (*ListRepoCredentialsResponse)(nil), // 118: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse - (*UpdateRepoCredentialsRequest)(nil), // 119: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsRequest - (*UpdateRepoCredentialsResponse)(nil), // 120: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse - (*ListGenericCredentialsRequest)(nil), // 121: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsRequest - (*ListGenericCredentialsResponse)(nil), // 122: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse - (*CreateGenericCredentialsRequest)(nil), // 123: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest - (*CreateGenericCredentialsResponse)(nil), // 124: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse - (*UpdateGenericCredentialsRequest)(nil), // 125: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest - (*UpdateGenericCredentialsResponse)(nil), // 126: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse - (*DeleteGenericCredentialsRequest)(nil), // 127: akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsRequest - (*DeleteGenericCredentialsResponse)(nil), // 128: akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsResponse - (*ListAnalysisTemplatesRequest)(nil), // 129: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest - (*ListAnalysisTemplatesResponse)(nil), // 130: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse - (*GetAnalysisTemplateRequest)(nil), // 131: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest - (*GetAnalysisTemplateResponse)(nil), // 132: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse - (*DeleteAnalysisTemplateRequest)(nil), // 133: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest - (*DeleteAnalysisTemplateResponse)(nil), // 134: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse - (*ListClusterAnalysisTemplatesRequest)(nil), // 135: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest - (*ListClusterAnalysisTemplatesResponse)(nil), // 136: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse - (*GetClusterAnalysisTemplateRequest)(nil), // 137: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest - (*GetClusterAnalysisTemplateResponse)(nil), // 138: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse - (*DeleteClusterAnalysisTemplateRequest)(nil), // 139: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest - (*DeleteClusterAnalysisTemplateResponse)(nil), // 140: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse - (*GetAnalysisRunRequest)(nil), // 141: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest - (*GetAnalysisRunResponse)(nil), // 142: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse - (*GetAnalysisRunLogsRequest)(nil), // 143: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest - (*GetAnalysisRunLogsResponse)(nil), // 144: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse - (*ListProjectEventsRequest)(nil), // 145: akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest - (*ListProjectEventsResponse)(nil), // 146: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse - (*ListPromotionTasksRequest)(nil), // 147: akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest - (*ListPromotionTasksResponse)(nil), // 148: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse - (*GetPromotionTaskRequest)(nil), // 149: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest - (*GetPromotionTaskResponse)(nil), // 150: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse - (*ListClusterPromotionTasksRequest)(nil), // 151: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest - (*ListClusterPromotionTasksResponse)(nil), // 152: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse - (*GetClusterPromotionTaskRequest)(nil), // 153: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest - (*GetClusterPromotionTaskResponse)(nil), // 154: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse - (*CreateRoleRequest)(nil), // 155: akuity.io.kargo.service.v1alpha1.CreateRoleRequest - (*CreateRoleResponse)(nil), // 156: akuity.io.kargo.service.v1alpha1.CreateRoleResponse - (*DeleteRoleRequest)(nil), // 157: akuity.io.kargo.service.v1alpha1.DeleteRoleRequest - (*DeleteRoleResponse)(nil), // 158: akuity.io.kargo.service.v1alpha1.DeleteRoleResponse - (*GetRoleRequest)(nil), // 159: akuity.io.kargo.service.v1alpha1.GetRoleRequest - (*GetRoleResponse)(nil), // 160: akuity.io.kargo.service.v1alpha1.GetRoleResponse - (*Claims)(nil), // 161: akuity.io.kargo.service.v1alpha1.Claims - (*GrantRequest)(nil), // 162: akuity.io.kargo.service.v1alpha1.GrantRequest - (*GrantResponse)(nil), // 163: akuity.io.kargo.service.v1alpha1.GrantResponse - (*ListRolesRequest)(nil), // 164: akuity.io.kargo.service.v1alpha1.ListRolesRequest - (*ListRolesResponse)(nil), // 165: akuity.io.kargo.service.v1alpha1.ListRolesResponse - (*RevokeRequest)(nil), // 166: akuity.io.kargo.service.v1alpha1.RevokeRequest - (*RevokeResponse)(nil), // 167: akuity.io.kargo.service.v1alpha1.RevokeResponse - (*UpdateRoleRequest)(nil), // 168: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest - (*UpdateRoleResponse)(nil), // 169: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse - (*CreateAPITokenRequest)(nil), // 170: akuity.io.kargo.service.v1alpha1.CreateAPITokenRequest - (*CreateAPITokenResponse)(nil), // 171: akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse - (*DeleteAPITokenRequest)(nil), // 172: akuity.io.kargo.service.v1alpha1.DeleteAPITokenRequest - (*DeleteAPITokenResponse)(nil), // 173: akuity.io.kargo.service.v1alpha1.DeleteAPITokenResponse - (*GetAPITokenRequest)(nil), // 174: akuity.io.kargo.service.v1alpha1.GetAPITokenRequest - (*GetAPITokenResponse)(nil), // 175: akuity.io.kargo.service.v1alpha1.GetAPITokenResponse - (*ListAPITokensRequest)(nil), // 176: akuity.io.kargo.service.v1alpha1.ListAPITokensRequest - (*ListAPITokensResponse)(nil), // 177: akuity.io.kargo.service.v1alpha1.ListAPITokensResponse - (*RefreshResourceRequest)(nil), // 178: akuity.io.kargo.service.v1alpha1.RefreshResourceRequest - (*RefreshResourceResponse)(nil), // 179: akuity.io.kargo.service.v1alpha1.RefreshResourceResponse - nil, // 180: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry - nil, // 181: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry - nil, // 182: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry - nil, // 183: akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry - nil, // 184: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry - nil, // 185: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.DataEntry - nil, // 186: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.DataEntry - nil, // 187: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.DataEntry - nil, // 188: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.DataEntry - (*timestamppb.Timestamp)(nil), // 189: google.protobuf.Timestamp - (*v1alpha1.Stage)(nil), // 190: github.com.akuity.kargo.api.v1alpha1.Stage - (*v1.ObjectMeta)(nil), // 191: k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta - (*v1alpha1.FreightRequest)(nil), // 192: github.com.akuity.kargo.api.v1alpha1.FreightRequest - (*v1.Condition)(nil), // 193: k8s.io.apimachinery.pkg.apis.meta.v1.Condition - (*v1alpha1.FreightCollection)(nil), // 194: github.com.akuity.kargo.api.v1alpha1.FreightCollection - (*v1alpha1.PromotionReference)(nil), // 195: github.com.akuity.kargo.api.v1alpha1.PromotionReference - (*v1alpha1.Health)(nil), // 196: github.com.akuity.kargo.api.v1alpha1.Health - (*v1alpha1.ClusterConfig)(nil), // 197: github.com.akuity.kargo.api.v1alpha1.ClusterConfig - (*v1alpha1.Promotion)(nil), // 198: github.com.akuity.kargo.api.v1alpha1.Promotion - (*v1alpha1.Project)(nil), // 199: github.com.akuity.kargo.api.v1alpha1.Project - (*v1alpha1.ProjectConfig)(nil), // 200: github.com.akuity.kargo.api.v1alpha1.ProjectConfig - (*v1alpha1.Freight)(nil), // 201: github.com.akuity.kargo.api.v1alpha1.Freight - (*v1alpha1.Warehouse)(nil), // 202: github.com.akuity.kargo.api.v1alpha1.Warehouse - (*v11.ConfigMap)(nil), // 203: k8s.io.api.core.v1.ConfigMap - (*v11.Secret)(nil), // 204: k8s.io.api.core.v1.Secret - (*v1alpha11.AnalysisTemplate)(nil), // 205: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate - (*v1alpha11.ClusterAnalysisTemplate)(nil), // 206: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate - (*v1alpha11.AnalysisRun)(nil), // 207: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun - (*v11.Event)(nil), // 208: k8s.io.api.core.v1.Event - (*v1alpha1.PromotionTask)(nil), // 209: github.com.akuity.kargo.api.v1alpha1.PromotionTask - (*v1alpha1.ClusterPromotionTask)(nil), // 210: github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask - (*v1alpha12.Role)(nil), // 211: github.com.akuity.kargo.api.rbac.v1alpha1.Role - (*v1alpha12.RoleResources)(nil), // 212: github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources - (*v1alpha12.Claim)(nil), // 213: github.com.akuity.kargo.api.rbac.v1alpha1.Claim - (*v1alpha12.ResourceDetails)(nil), // 214: github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails - (*anypb.Any)(nil), // 215: google.protobuf.Any + (*GetStageHealthOutputsRequest)(nil), // 33: akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsRequest + (*GetStageHealthOutputsResponse)(nil), // 34: akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse + (*WatchStagesRequest)(nil), // 35: akuity.io.kargo.service.v1alpha1.WatchStagesRequest + (*WatchStagesResponse)(nil), // 36: akuity.io.kargo.service.v1alpha1.WatchStagesResponse + (*DeleteStageRequest)(nil), // 37: akuity.io.kargo.service.v1alpha1.DeleteStageRequest + (*DeleteStageResponse)(nil), // 38: akuity.io.kargo.service.v1alpha1.DeleteStageResponse + (*StageSummary)(nil), // 39: akuity.io.kargo.service.v1alpha1.StageSummary + (*StageSpecSummary)(nil), // 40: akuity.io.kargo.service.v1alpha1.StageSpecSummary + (*StageStatusSummary)(nil), // 41: akuity.io.kargo.service.v1alpha1.StageStatusSummary + (*ListStageSummariesRequest)(nil), // 42: akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest + (*ListStageSummariesResponse)(nil), // 43: akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse + (*WatchStageSummariesRequest)(nil), // 44: akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest + (*WatchStageSummariesResponse)(nil), // 45: akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse + (*GetClusterConfigRequest)(nil), // 46: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest + (*GetClusterConfigResponse)(nil), // 47: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse + (*DeleteClusterConfigRequest)(nil), // 48: akuity.io.kargo.service.v1alpha1.DeleteClusterConfigRequest + (*DeleteClusterConfigResponse)(nil), // 49: akuity.io.kargo.service.v1alpha1.DeleteClusterConfigResponse + (*WatchClusterConfigRequest)(nil), // 50: akuity.io.kargo.service.v1alpha1.WatchClusterConfigRequest + (*WatchClusterConfigResponse)(nil), // 51: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse + (*ListPromotionsRequest)(nil), // 52: akuity.io.kargo.service.v1alpha1.ListPromotionsRequest + (*ListPromotionsResponse)(nil), // 53: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse + (*WatchPromotionsRequest)(nil), // 54: akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest + (*WatchPromotionsResponse)(nil), // 55: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse + (*GetPromotionRequest)(nil), // 56: akuity.io.kargo.service.v1alpha1.GetPromotionRequest + (*GetPromotionResponse)(nil), // 57: akuity.io.kargo.service.v1alpha1.GetPromotionResponse + (*WatchPromotionRequest)(nil), // 58: akuity.io.kargo.service.v1alpha1.WatchPromotionRequest + (*WatchPromotionResponse)(nil), // 59: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse + (*AbortPromotionRequest)(nil), // 60: akuity.io.kargo.service.v1alpha1.AbortPromotionRequest + (*AbortPromotionResponse)(nil), // 61: akuity.io.kargo.service.v1alpha1.AbortPromotionResponse + (*DeleteProjectRequest)(nil), // 62: akuity.io.kargo.service.v1alpha1.DeleteProjectRequest + (*DeleteProjectResponse)(nil), // 63: akuity.io.kargo.service.v1alpha1.DeleteProjectResponse + (*GetProjectRequest)(nil), // 64: akuity.io.kargo.service.v1alpha1.GetProjectRequest + (*GetProjectResponse)(nil), // 65: akuity.io.kargo.service.v1alpha1.GetProjectResponse + (*ListProjectsRequest)(nil), // 66: akuity.io.kargo.service.v1alpha1.ListProjectsRequest + (*ListProjectsResponse)(nil), // 67: akuity.io.kargo.service.v1alpha1.ListProjectsResponse + (*GetProjectConfigRequest)(nil), // 68: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest + (*GetProjectConfigResponse)(nil), // 69: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse + (*DeleteProjectConfigRequest)(nil), // 70: akuity.io.kargo.service.v1alpha1.DeleteProjectConfigRequest + (*DeleteProjectConfigResponse)(nil), // 71: akuity.io.kargo.service.v1alpha1.DeleteProjectConfigResponse + (*WatchProjectConfigRequest)(nil), // 72: akuity.io.kargo.service.v1alpha1.WatchProjectConfigRequest + (*WatchProjectConfigResponse)(nil), // 73: akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse + (*ApproveFreightRequest)(nil), // 74: akuity.io.kargo.service.v1alpha1.ApproveFreightRequest + (*ApproveFreightResponse)(nil), // 75: akuity.io.kargo.service.v1alpha1.ApproveFreightResponse + (*DeleteFreightRequest)(nil), // 76: akuity.io.kargo.service.v1alpha1.DeleteFreightRequest + (*DeleteFreightResponse)(nil), // 77: akuity.io.kargo.service.v1alpha1.DeleteFreightResponse + (*GetFreightRequest)(nil), // 78: akuity.io.kargo.service.v1alpha1.GetFreightRequest + (*GetFreightResponse)(nil), // 79: akuity.io.kargo.service.v1alpha1.GetFreightResponse + (*WatchFreightRequest)(nil), // 80: akuity.io.kargo.service.v1alpha1.WatchFreightRequest + (*WatchFreightResponse)(nil), // 81: akuity.io.kargo.service.v1alpha1.WatchFreightResponse + (*PromoteToStageRequest)(nil), // 82: akuity.io.kargo.service.v1alpha1.PromoteToStageRequest + (*PromoteToStageResponse)(nil), // 83: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse + (*PromoteDownstreamRequest)(nil), // 84: akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest + (*PromoteDownstreamResponse)(nil), // 85: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse + (*QueryFreightRequest)(nil), // 86: akuity.io.kargo.service.v1alpha1.QueryFreightRequest + (*QueryFreightResponse)(nil), // 87: akuity.io.kargo.service.v1alpha1.QueryFreightResponse + (*FreightList)(nil), // 88: akuity.io.kargo.service.v1alpha1.FreightList + (*UpdateFreightAliasRequest)(nil), // 89: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest + (*UpdateFreightAliasResponse)(nil), // 90: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse + (*ReverifyRequest)(nil), // 91: akuity.io.kargo.service.v1alpha1.ReverifyRequest + (*ReverifyResponse)(nil), // 92: akuity.io.kargo.service.v1alpha1.ReverifyResponse + (*AbortVerificationRequest)(nil), // 93: akuity.io.kargo.service.v1alpha1.AbortVerificationRequest + (*AbortVerificationResponse)(nil), // 94: akuity.io.kargo.service.v1alpha1.AbortVerificationResponse + (*ListWarehousesRequest)(nil), // 95: akuity.io.kargo.service.v1alpha1.ListWarehousesRequest + (*ListWarehousesResponse)(nil), // 96: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse + (*GetWarehouseRequest)(nil), // 97: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest + (*GetWarehouseResponse)(nil), // 98: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse + (*WatchWarehousesRequest)(nil), // 99: akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest + (*WatchWarehousesResponse)(nil), // 100: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse + (*DeleteWarehouseRequest)(nil), // 101: akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest + (*DeleteWarehouseResponse)(nil), // 102: akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse + (*CreateConfigMapRequest)(nil), // 103: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest + (*CreateConfigMapResponse)(nil), // 104: akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse + (*DeleteConfigMapRequest)(nil), // 105: akuity.io.kargo.service.v1alpha1.DeleteConfigMapRequest + (*DeleteConfigMapResponse)(nil), // 106: akuity.io.kargo.service.v1alpha1.DeleteConfigMapResponse + (*ListConfigMapsRequest)(nil), // 107: akuity.io.kargo.service.v1alpha1.ListConfigMapsRequest + (*ListConfigMapsResponse)(nil), // 108: akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse + (*GetConfigMapRequest)(nil), // 109: akuity.io.kargo.service.v1alpha1.GetConfigMapRequest + (*GetConfigMapResponse)(nil), // 110: akuity.io.kargo.service.v1alpha1.GetConfigMapResponse + (*UpdateConfigMapRequest)(nil), // 111: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest + (*UpdateConfigMapResponse)(nil), // 112: akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse + (*CreateRepoCredentialsRequest)(nil), // 113: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsRequest + (*CreateRepoCredentialsResponse)(nil), // 114: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse + (*DeleteRepoCredentialsRequest)(nil), // 115: akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsRequest + (*DeleteRepoCredentialsResponse)(nil), // 116: akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsResponse + (*GetRepoCredentialsRequest)(nil), // 117: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest + (*GetRepoCredentialsResponse)(nil), // 118: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse + (*ListRepoCredentialsRequest)(nil), // 119: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsRequest + (*ListRepoCredentialsResponse)(nil), // 120: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse + (*UpdateRepoCredentialsRequest)(nil), // 121: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsRequest + (*UpdateRepoCredentialsResponse)(nil), // 122: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse + (*ListGenericCredentialsRequest)(nil), // 123: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsRequest + (*ListGenericCredentialsResponse)(nil), // 124: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse + (*CreateGenericCredentialsRequest)(nil), // 125: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest + (*CreateGenericCredentialsResponse)(nil), // 126: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse + (*UpdateGenericCredentialsRequest)(nil), // 127: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest + (*UpdateGenericCredentialsResponse)(nil), // 128: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse + (*DeleteGenericCredentialsRequest)(nil), // 129: akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsRequest + (*DeleteGenericCredentialsResponse)(nil), // 130: akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsResponse + (*ListAnalysisTemplatesRequest)(nil), // 131: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest + (*ListAnalysisTemplatesResponse)(nil), // 132: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse + (*GetAnalysisTemplateRequest)(nil), // 133: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest + (*GetAnalysisTemplateResponse)(nil), // 134: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse + (*DeleteAnalysisTemplateRequest)(nil), // 135: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest + (*DeleteAnalysisTemplateResponse)(nil), // 136: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse + (*ListClusterAnalysisTemplatesRequest)(nil), // 137: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest + (*ListClusterAnalysisTemplatesResponse)(nil), // 138: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse + (*GetClusterAnalysisTemplateRequest)(nil), // 139: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest + (*GetClusterAnalysisTemplateResponse)(nil), // 140: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse + (*DeleteClusterAnalysisTemplateRequest)(nil), // 141: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest + (*DeleteClusterAnalysisTemplateResponse)(nil), // 142: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse + (*GetAnalysisRunRequest)(nil), // 143: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest + (*GetAnalysisRunResponse)(nil), // 144: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse + (*GetAnalysisRunLogsRequest)(nil), // 145: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest + (*GetAnalysisRunLogsResponse)(nil), // 146: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse + (*ListProjectEventsRequest)(nil), // 147: akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest + (*ListProjectEventsResponse)(nil), // 148: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse + (*ListPromotionTasksRequest)(nil), // 149: akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest + (*ListPromotionTasksResponse)(nil), // 150: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse + (*GetPromotionTaskRequest)(nil), // 151: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest + (*GetPromotionTaskResponse)(nil), // 152: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse + (*ListClusterPromotionTasksRequest)(nil), // 153: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest + (*ListClusterPromotionTasksResponse)(nil), // 154: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse + (*GetClusterPromotionTaskRequest)(nil), // 155: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest + (*GetClusterPromotionTaskResponse)(nil), // 156: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse + (*CreateRoleRequest)(nil), // 157: akuity.io.kargo.service.v1alpha1.CreateRoleRequest + (*CreateRoleResponse)(nil), // 158: akuity.io.kargo.service.v1alpha1.CreateRoleResponse + (*DeleteRoleRequest)(nil), // 159: akuity.io.kargo.service.v1alpha1.DeleteRoleRequest + (*DeleteRoleResponse)(nil), // 160: akuity.io.kargo.service.v1alpha1.DeleteRoleResponse + (*GetRoleRequest)(nil), // 161: akuity.io.kargo.service.v1alpha1.GetRoleRequest + (*GetRoleResponse)(nil), // 162: akuity.io.kargo.service.v1alpha1.GetRoleResponse + (*Claims)(nil), // 163: akuity.io.kargo.service.v1alpha1.Claims + (*GrantRequest)(nil), // 164: akuity.io.kargo.service.v1alpha1.GrantRequest + (*GrantResponse)(nil), // 165: akuity.io.kargo.service.v1alpha1.GrantResponse + (*ListRolesRequest)(nil), // 166: akuity.io.kargo.service.v1alpha1.ListRolesRequest + (*ListRolesResponse)(nil), // 167: akuity.io.kargo.service.v1alpha1.ListRolesResponse + (*RevokeRequest)(nil), // 168: akuity.io.kargo.service.v1alpha1.RevokeRequest + (*RevokeResponse)(nil), // 169: akuity.io.kargo.service.v1alpha1.RevokeResponse + (*UpdateRoleRequest)(nil), // 170: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest + (*UpdateRoleResponse)(nil), // 171: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse + (*CreateAPITokenRequest)(nil), // 172: akuity.io.kargo.service.v1alpha1.CreateAPITokenRequest + (*CreateAPITokenResponse)(nil), // 173: akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse + (*DeleteAPITokenRequest)(nil), // 174: akuity.io.kargo.service.v1alpha1.DeleteAPITokenRequest + (*DeleteAPITokenResponse)(nil), // 175: akuity.io.kargo.service.v1alpha1.DeleteAPITokenResponse + (*GetAPITokenRequest)(nil), // 176: akuity.io.kargo.service.v1alpha1.GetAPITokenRequest + (*GetAPITokenResponse)(nil), // 177: akuity.io.kargo.service.v1alpha1.GetAPITokenResponse + (*ListAPITokensRequest)(nil), // 178: akuity.io.kargo.service.v1alpha1.ListAPITokensRequest + (*ListAPITokensResponse)(nil), // 179: akuity.io.kargo.service.v1alpha1.ListAPITokensResponse + (*RefreshResourceRequest)(nil), // 180: akuity.io.kargo.service.v1alpha1.RefreshResourceRequest + (*RefreshResourceResponse)(nil), // 181: akuity.io.kargo.service.v1alpha1.RefreshResourceResponse + nil, // 182: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry + nil, // 183: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry + nil, // 184: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry + nil, // 185: akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry + nil, // 186: akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse.HealthOutputsEntry + nil, // 187: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry + nil, // 188: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.DataEntry + nil, // 189: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.DataEntry + nil, // 190: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.DataEntry + nil, // 191: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.DataEntry + (*timestamppb.Timestamp)(nil), // 192: google.protobuf.Timestamp + (*v1alpha1.Stage)(nil), // 193: github.com.akuity.kargo.api.v1alpha1.Stage + (*v1.ObjectMeta)(nil), // 194: k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta + (*v1alpha1.FreightRequest)(nil), // 195: github.com.akuity.kargo.api.v1alpha1.FreightRequest + (*v1.Condition)(nil), // 196: k8s.io.apimachinery.pkg.apis.meta.v1.Condition + (*v1alpha1.FreightCollection)(nil), // 197: github.com.akuity.kargo.api.v1alpha1.FreightCollection + (*v1alpha1.PromotionReference)(nil), // 198: github.com.akuity.kargo.api.v1alpha1.PromotionReference + (*v1alpha1.Health)(nil), // 199: github.com.akuity.kargo.api.v1alpha1.Health + (*v1alpha1.ClusterConfig)(nil), // 200: github.com.akuity.kargo.api.v1alpha1.ClusterConfig + (*v1alpha1.Promotion)(nil), // 201: github.com.akuity.kargo.api.v1alpha1.Promotion + (*v1alpha1.Project)(nil), // 202: github.com.akuity.kargo.api.v1alpha1.Project + (*v1alpha1.ProjectConfig)(nil), // 203: github.com.akuity.kargo.api.v1alpha1.ProjectConfig + (*v1alpha1.Freight)(nil), // 204: github.com.akuity.kargo.api.v1alpha1.Freight + (*v1alpha1.Warehouse)(nil), // 205: github.com.akuity.kargo.api.v1alpha1.Warehouse + (*v11.ConfigMap)(nil), // 206: k8s.io.api.core.v1.ConfigMap + (*v11.Secret)(nil), // 207: k8s.io.api.core.v1.Secret + (*v1alpha11.AnalysisTemplate)(nil), // 208: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate + (*v1alpha11.ClusterAnalysisTemplate)(nil), // 209: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate + (*v1alpha11.AnalysisRun)(nil), // 210: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun + (*v11.Event)(nil), // 211: k8s.io.api.core.v1.Event + (*v1alpha1.PromotionTask)(nil), // 212: github.com.akuity.kargo.api.v1alpha1.PromotionTask + (*v1alpha1.ClusterPromotionTask)(nil), // 213: github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask + (*v1alpha12.Role)(nil), // 214: github.com.akuity.kargo.api.rbac.v1alpha1.Role + (*v1alpha12.RoleResources)(nil), // 215: github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources + (*v1alpha12.Claim)(nil), // 216: github.com.akuity.kargo.api.rbac.v1alpha1.Claim + (*v1alpha12.ResourceDetails)(nil), // 217: github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails + (*anypb.Any)(nil), // 218: google.protobuf.Any } var file_api_service_v1alpha1_service_proto_depIdxs = []int32{ 2, // 0: akuity.io.kargo.service.v1alpha1.ComponentVersions.server:type_name -> akuity.io.kargo.service.v1alpha1.VersionInfo 2, // 1: akuity.io.kargo.service.v1alpha1.ComponentVersions.cli:type_name -> akuity.io.kargo.service.v1alpha1.VersionInfo - 189, // 2: akuity.io.kargo.service.v1alpha1.VersionInfo.build_time:type_name -> google.protobuf.Timestamp + 192, // 2: akuity.io.kargo.service.v1alpha1.VersionInfo.build_time:type_name -> google.protobuf.Timestamp 2, // 3: akuity.io.kargo.service.v1alpha1.GetVersionInfoResponse.version_info:type_name -> akuity.io.kargo.service.v1alpha1.VersionInfo - 180, // 4: akuity.io.kargo.service.v1alpha1.GetConfigResponse.argocd_shards:type_name -> akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry + 182, // 4: akuity.io.kargo.service.v1alpha1.GetConfigResponse.argocd_shards:type_name -> akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry 10, // 5: akuity.io.kargo.service.v1alpha1.GetPublicConfigResponse.oidc_config:type_name -> akuity.io.kargo.service.v1alpha1.OIDCConfig 14, // 6: akuity.io.kargo.service.v1alpha1.CreateResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.CreateResourceResult 17, // 7: akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResult 20, // 8: akuity.io.kargo.service.v1alpha1.UpdateResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.UpdateResourceResult 23, // 9: akuity.io.kargo.service.v1alpha1.DeleteResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.DeleteResourceResult - 190, // 10: akuity.io.kargo.service.v1alpha1.ListStagesResponse.stages:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage - 181, // 11: akuity.io.kargo.service.v1alpha1.ListImagesResponse.images:type_name -> akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry - 182, // 12: akuity.io.kargo.service.v1alpha1.TagMap.tags:type_name -> akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry - 183, // 13: akuity.io.kargo.service.v1alpha1.ImageStageMap.stages:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry + 193, // 10: akuity.io.kargo.service.v1alpha1.ListStagesResponse.stages:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage + 183, // 11: akuity.io.kargo.service.v1alpha1.ListImagesResponse.images:type_name -> akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry + 184, // 12: akuity.io.kargo.service.v1alpha1.TagMap.tags:type_name -> akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry + 185, // 13: akuity.io.kargo.service.v1alpha1.ImageStageMap.stages:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry 0, // 14: akuity.io.kargo.service.v1alpha1.GetStageRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 190, // 15: akuity.io.kargo.service.v1alpha1.GetStageResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage - 190, // 16: akuity.io.kargo.service.v1alpha1.WatchStagesResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage - 191, // 17: akuity.io.kargo.service.v1alpha1.StageSummary.metadata:type_name -> k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta - 38, // 18: akuity.io.kargo.service.v1alpha1.StageSummary.spec:type_name -> akuity.io.kargo.service.v1alpha1.StageSpecSummary - 39, // 19: akuity.io.kargo.service.v1alpha1.StageSummary.status:type_name -> akuity.io.kargo.service.v1alpha1.StageStatusSummary - 192, // 20: akuity.io.kargo.service.v1alpha1.StageSpecSummary.requested_freight:type_name -> github.com.akuity.kargo.api.v1alpha1.FreightRequest - 193, // 21: akuity.io.kargo.service.v1alpha1.StageStatusSummary.conditions:type_name -> k8s.io.apimachinery.pkg.apis.meta.v1.Condition - 194, // 22: akuity.io.kargo.service.v1alpha1.StageStatusSummary.current_freight:type_name -> github.com.akuity.kargo.api.v1alpha1.FreightCollection - 195, // 23: akuity.io.kargo.service.v1alpha1.StageStatusSummary.current_promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionReference - 195, // 24: akuity.io.kargo.service.v1alpha1.StageStatusSummary.last_promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionReference - 196, // 25: akuity.io.kargo.service.v1alpha1.StageStatusSummary.health:type_name -> github.com.akuity.kargo.api.v1alpha1.Health - 37, // 26: akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse.stage_summaries:type_name -> akuity.io.kargo.service.v1alpha1.StageSummary - 37, // 27: akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse.stage_summary:type_name -> akuity.io.kargo.service.v1alpha1.StageSummary - 0, // 28: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 197, // 29: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig - 197, // 30: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig - 198, // 31: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 198, // 32: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 0, // 33: akuity.io.kargo.service.v1alpha1.GetPromotionRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 198, // 34: akuity.io.kargo.service.v1alpha1.GetPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 198, // 35: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 0, // 36: akuity.io.kargo.service.v1alpha1.GetProjectRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 199, // 37: akuity.io.kargo.service.v1alpha1.GetProjectResponse.project:type_name -> github.com.akuity.kargo.api.v1alpha1.Project - 199, // 38: akuity.io.kargo.service.v1alpha1.ListProjectsResponse.projects:type_name -> github.com.akuity.kargo.api.v1alpha1.Project - 0, // 39: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 200, // 40: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig - 200, // 41: akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig - 0, // 42: akuity.io.kargo.service.v1alpha1.GetFreightRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 201, // 43: akuity.io.kargo.service.v1alpha1.GetFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight - 201, // 44: akuity.io.kargo.service.v1alpha1.WatchFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight - 198, // 45: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 198, // 46: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 184, // 47: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.groups:type_name -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry - 201, // 48: akuity.io.kargo.service.v1alpha1.FreightList.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight - 202, // 49: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse.warehouses:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse - 0, // 50: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 202, // 51: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse - 202, // 52: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse - 185, // 53: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.DataEntry - 203, // 54: akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap - 203, // 55: akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse.config_maps:type_name -> k8s.io.api.core.v1.ConfigMap - 0, // 56: akuity.io.kargo.service.v1alpha1.GetConfigMapRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 203, // 57: akuity.io.kargo.service.v1alpha1.GetConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap - 186, // 58: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.DataEntry - 203, // 59: akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap - 204, // 60: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 0, // 61: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 204, // 62: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 204, // 63: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 204, // 64: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 204, // 65: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 187, // 66: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.DataEntry - 204, // 67: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 188, // 68: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.DataEntry - 204, // 69: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 205, // 70: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse.analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate - 0, // 71: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 205, // 72: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse.analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate - 206, // 73: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse.cluster_analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate - 0, // 74: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 206, // 75: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse.cluster_analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate - 0, // 76: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 207, // 77: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse.analysis_run:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun - 208, // 78: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse.events:type_name -> k8s.io.api.core.v1.Event - 209, // 79: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse.promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask - 0, // 80: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 209, // 81: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask - 210, // 82: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse.cluster_promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask - 0, // 83: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 210, // 84: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask - 211, // 85: akuity.io.kargo.service.v1alpha1.CreateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 211, // 86: akuity.io.kargo.service.v1alpha1.CreateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 0, // 87: akuity.io.kargo.service.v1alpha1.GetRoleRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 211, // 88: akuity.io.kargo.service.v1alpha1.GetRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 212, // 89: akuity.io.kargo.service.v1alpha1.GetRoleResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources - 213, // 90: akuity.io.kargo.service.v1alpha1.Claims.claims:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Claim - 161, // 91: akuity.io.kargo.service.v1alpha1.GrantRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims - 214, // 92: akuity.io.kargo.service.v1alpha1.GrantRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails - 211, // 93: akuity.io.kargo.service.v1alpha1.GrantResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 211, // 94: akuity.io.kargo.service.v1alpha1.ListRolesResponse.roles:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 212, // 95: akuity.io.kargo.service.v1alpha1.ListRolesResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources - 161, // 96: akuity.io.kargo.service.v1alpha1.RevokeRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims - 214, // 97: akuity.io.kargo.service.v1alpha1.RevokeRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails - 211, // 98: akuity.io.kargo.service.v1alpha1.RevokeResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 211, // 99: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 211, // 100: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 204, // 101: akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse.token_secret:type_name -> k8s.io.api.core.v1.Secret - 0, // 102: akuity.io.kargo.service.v1alpha1.GetAPITokenRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 204, // 103: akuity.io.kargo.service.v1alpha1.GetAPITokenResponse.token_secret:type_name -> k8s.io.api.core.v1.Secret - 204, // 104: akuity.io.kargo.service.v1alpha1.ListAPITokensResponse.token_secrets:type_name -> k8s.io.api.core.v1.Secret - 215, // 105: akuity.io.kargo.service.v1alpha1.RefreshResourceResponse.resource:type_name -> google.protobuf.Any - 6, // 106: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ArgoCDShard - 29, // 107: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.TagMap - 30, // 108: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap - 86, // 109: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.FreightList - 3, // 110: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:input_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoRequest - 5, // 111: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigRequest - 8, // 112: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigRequest - 11, // 113: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:input_type -> akuity.io.kargo.service.v1alpha1.AdminLoginRequest - 13, // 114: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateResourceRequest - 16, // 115: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceRequest - 19, // 116: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceRequest - 22, // 117: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:input_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceRequest - 178, // 118: akuity.io.kargo.service.v1alpha1.KargoService.RefreshResource:input_type -> akuity.io.kargo.service.v1alpha1.RefreshResourceRequest - 25, // 119: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:input_type -> akuity.io.kargo.service.v1alpha1.ListStagesRequest - 40, // 120: akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries:input_type -> akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest - 27, // 121: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:input_type -> akuity.io.kargo.service.v1alpha1.ListImagesRequest - 31, // 122: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:input_type -> akuity.io.kargo.service.v1alpha1.GetStageRequest - 33, // 123: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:input_type -> akuity.io.kargo.service.v1alpha1.WatchStagesRequest - 42, // 124: akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries:input_type -> akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest - 35, // 125: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:input_type -> akuity.io.kargo.service.v1alpha1.DeleteStageRequest - 44, // 126: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest - 46, // 127: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterConfigRequest - 48, // 128: akuity.io.kargo.service.v1alpha1.KargoService.WatchClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.WatchClusterConfigRequest - 50, // 129: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsRequest - 52, // 130: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest - 54, // 131: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionRequest - 56, // 132: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionRequest - 58, // 133: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:input_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionRequest - 60, // 134: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectRequest - 62, // 135: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectRequest - 64, // 136: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectsRequest - 66, // 137: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest - 68, // 138: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectConfigRequest - 70, // 139: akuity.io.kargo.service.v1alpha1.KargoService.WatchProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.WatchProjectConfigRequest - 72, // 140: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:input_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightRequest - 74, // 141: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:input_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightRequest - 76, // 142: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:input_type -> akuity.io.kargo.service.v1alpha1.GetFreightRequest - 78, // 143: akuity.io.kargo.service.v1alpha1.KargoService.WatchFreight:input_type -> akuity.io.kargo.service.v1alpha1.WatchFreightRequest - 80, // 144: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:input_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageRequest - 82, // 145: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:input_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest - 84, // 146: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:input_type -> akuity.io.kargo.service.v1alpha1.QueryFreightRequest - 87, // 147: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:input_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest - 89, // 148: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:input_type -> akuity.io.kargo.service.v1alpha1.ReverifyRequest - 91, // 149: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:input_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationRequest - 93, // 150: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesRequest - 95, // 151: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseRequest - 97, // 152: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest - 99, // 153: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest - 111, // 154: akuity.io.kargo.service.v1alpha1.KargoService.CreateRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsRequest - 113, // 155: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsRequest - 115, // 156: akuity.io.kargo.service.v1alpha1.KargoService.GetRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest - 117, // 157: akuity.io.kargo.service.v1alpha1.KargoService.ListRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListRepoCredentialsRequest - 119, // 158: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsRequest - 121, // 159: akuity.io.kargo.service.v1alpha1.KargoService.ListGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListGenericCredentialsRequest - 123, // 160: akuity.io.kargo.service.v1alpha1.KargoService.CreateGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest - 125, // 161: akuity.io.kargo.service.v1alpha1.KargoService.UpdateGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest - 127, // 162: akuity.io.kargo.service.v1alpha1.KargoService.DeleteGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsRequest - 101, // 163: akuity.io.kargo.service.v1alpha1.KargoService.CreateConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest - 103, // 164: akuity.io.kargo.service.v1alpha1.KargoService.DeleteConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.DeleteConfigMapRequest - 105, // 165: akuity.io.kargo.service.v1alpha1.KargoService.ListConfigMaps:input_type -> akuity.io.kargo.service.v1alpha1.ListConfigMapsRequest - 107, // 166: akuity.io.kargo.service.v1alpha1.KargoService.GetConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigMapRequest - 109, // 167: akuity.io.kargo.service.v1alpha1.KargoService.UpdateConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest - 129, // 168: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest - 131, // 169: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest - 133, // 170: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest - 135, // 171: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest - 137, // 172: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest - 139, // 173: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest - 141, // 174: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest - 143, // 175: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest - 145, // 176: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest - 147, // 177: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest - 151, // 178: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest - 149, // 179: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest - 153, // 180: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest - 155, // 181: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:input_type -> akuity.io.kargo.service.v1alpha1.CreateRoleRequest - 157, // 182: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleRequest - 159, // 183: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:input_type -> akuity.io.kargo.service.v1alpha1.GetRoleRequest - 162, // 184: akuity.io.kargo.service.v1alpha1.KargoService.Grant:input_type -> akuity.io.kargo.service.v1alpha1.GrantRequest - 164, // 185: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:input_type -> akuity.io.kargo.service.v1alpha1.ListRolesRequest - 166, // 186: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:input_type -> akuity.io.kargo.service.v1alpha1.RevokeRequest - 168, // 187: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleRequest - 170, // 188: akuity.io.kargo.service.v1alpha1.KargoService.CreateAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.CreateAPITokenRequest - 172, // 189: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAPITokenRequest - 174, // 190: akuity.io.kargo.service.v1alpha1.KargoService.GetAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.GetAPITokenRequest - 176, // 191: akuity.io.kargo.service.v1alpha1.KargoService.ListAPITokens:input_type -> akuity.io.kargo.service.v1alpha1.ListAPITokensRequest - 4, // 192: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:output_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoResponse - 7, // 193: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigResponse - 9, // 194: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigResponse - 12, // 195: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:output_type -> akuity.io.kargo.service.v1alpha1.AdminLoginResponse - 15, // 196: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateResourceResponse - 18, // 197: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResponse - 21, // 198: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceResponse - 24, // 199: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:output_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceResponse - 179, // 200: akuity.io.kargo.service.v1alpha1.KargoService.RefreshResource:output_type -> akuity.io.kargo.service.v1alpha1.RefreshResourceResponse - 26, // 201: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:output_type -> akuity.io.kargo.service.v1alpha1.ListStagesResponse - 41, // 202: akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries:output_type -> akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse - 28, // 203: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:output_type -> akuity.io.kargo.service.v1alpha1.ListImagesResponse - 32, // 204: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:output_type -> akuity.io.kargo.service.v1alpha1.GetStageResponse - 34, // 205: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:output_type -> akuity.io.kargo.service.v1alpha1.WatchStagesResponse - 43, // 206: akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries:output_type -> akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse - 36, // 207: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:output_type -> akuity.io.kargo.service.v1alpha1.DeleteStageResponse - 45, // 208: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse - 47, // 209: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterConfigResponse - 49, // 210: akuity.io.kargo.service.v1alpha1.KargoService.WatchClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse - 51, // 211: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsResponse - 53, // 212: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse - 55, // 213: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionResponse - 57, // 214: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionResponse - 59, // 215: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:output_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionResponse - 61, // 216: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectResponse - 63, // 217: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectResponse - 65, // 218: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectsResponse - 67, // 219: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse - 69, // 220: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectConfigResponse - 71, // 221: akuity.io.kargo.service.v1alpha1.KargoService.WatchProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse - 73, // 222: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:output_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightResponse - 75, // 223: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:output_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightResponse - 77, // 224: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:output_type -> akuity.io.kargo.service.v1alpha1.GetFreightResponse - 79, // 225: akuity.io.kargo.service.v1alpha1.KargoService.WatchFreight:output_type -> akuity.io.kargo.service.v1alpha1.WatchFreightResponse - 81, // 226: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:output_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageResponse - 83, // 227: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:output_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse - 85, // 228: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:output_type -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse - 88, // 229: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:output_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse - 90, // 230: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:output_type -> akuity.io.kargo.service.v1alpha1.ReverifyResponse - 92, // 231: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:output_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationResponse - 94, // 232: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesResponse - 96, // 233: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseResponse - 98, // 234: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse - 100, // 235: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse - 112, // 236: akuity.io.kargo.service.v1alpha1.KargoService.CreateRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse - 114, // 237: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsResponse - 116, // 238: akuity.io.kargo.service.v1alpha1.KargoService.GetRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse - 118, // 239: akuity.io.kargo.service.v1alpha1.KargoService.ListRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse - 120, // 240: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse - 122, // 241: akuity.io.kargo.service.v1alpha1.KargoService.ListGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse - 124, // 242: akuity.io.kargo.service.v1alpha1.KargoService.CreateGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse - 126, // 243: akuity.io.kargo.service.v1alpha1.KargoService.UpdateGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse - 128, // 244: akuity.io.kargo.service.v1alpha1.KargoService.DeleteGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsResponse - 102, // 245: akuity.io.kargo.service.v1alpha1.KargoService.CreateConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse - 104, // 246: akuity.io.kargo.service.v1alpha1.KargoService.DeleteConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.DeleteConfigMapResponse - 106, // 247: akuity.io.kargo.service.v1alpha1.KargoService.ListConfigMaps:output_type -> akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse - 108, // 248: akuity.io.kargo.service.v1alpha1.KargoService.GetConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigMapResponse - 110, // 249: akuity.io.kargo.service.v1alpha1.KargoService.UpdateConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse - 130, // 250: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse - 132, // 251: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse - 134, // 252: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse - 136, // 253: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse - 138, // 254: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse - 140, // 255: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse - 142, // 256: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse - 144, // 257: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse - 146, // 258: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse - 148, // 259: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse - 152, // 260: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse - 150, // 261: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse - 154, // 262: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse - 156, // 263: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:output_type -> akuity.io.kargo.service.v1alpha1.CreateRoleResponse - 158, // 264: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleResponse - 160, // 265: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:output_type -> akuity.io.kargo.service.v1alpha1.GetRoleResponse - 163, // 266: akuity.io.kargo.service.v1alpha1.KargoService.Grant:output_type -> akuity.io.kargo.service.v1alpha1.GrantResponse - 165, // 267: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:output_type -> akuity.io.kargo.service.v1alpha1.ListRolesResponse - 167, // 268: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:output_type -> akuity.io.kargo.service.v1alpha1.RevokeResponse - 169, // 269: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleResponse - 171, // 270: akuity.io.kargo.service.v1alpha1.KargoService.CreateAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse - 173, // 271: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAPITokenResponse - 175, // 272: akuity.io.kargo.service.v1alpha1.KargoService.GetAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.GetAPITokenResponse - 177, // 273: akuity.io.kargo.service.v1alpha1.KargoService.ListAPITokens:output_type -> akuity.io.kargo.service.v1alpha1.ListAPITokensResponse - 192, // [192:274] is the sub-list for method output_type - 110, // [110:192] is the sub-list for method input_type - 110, // [110:110] is the sub-list for extension type_name - 110, // [110:110] is the sub-list for extension extendee - 0, // [0:110] is the sub-list for field type_name + 193, // 15: akuity.io.kargo.service.v1alpha1.GetStageResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage + 186, // 16: akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse.health_outputs:type_name -> akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse.HealthOutputsEntry + 193, // 17: akuity.io.kargo.service.v1alpha1.WatchStagesResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage + 194, // 18: akuity.io.kargo.service.v1alpha1.StageSummary.metadata:type_name -> k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta + 40, // 19: akuity.io.kargo.service.v1alpha1.StageSummary.spec:type_name -> akuity.io.kargo.service.v1alpha1.StageSpecSummary + 41, // 20: akuity.io.kargo.service.v1alpha1.StageSummary.status:type_name -> akuity.io.kargo.service.v1alpha1.StageStatusSummary + 195, // 21: akuity.io.kargo.service.v1alpha1.StageSpecSummary.requested_freight:type_name -> github.com.akuity.kargo.api.v1alpha1.FreightRequest + 196, // 22: akuity.io.kargo.service.v1alpha1.StageStatusSummary.conditions:type_name -> k8s.io.apimachinery.pkg.apis.meta.v1.Condition + 197, // 23: akuity.io.kargo.service.v1alpha1.StageStatusSummary.current_freight:type_name -> github.com.akuity.kargo.api.v1alpha1.FreightCollection + 198, // 24: akuity.io.kargo.service.v1alpha1.StageStatusSummary.current_promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionReference + 198, // 25: akuity.io.kargo.service.v1alpha1.StageStatusSummary.last_promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionReference + 199, // 26: akuity.io.kargo.service.v1alpha1.StageStatusSummary.health:type_name -> github.com.akuity.kargo.api.v1alpha1.Health + 39, // 27: akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse.stage_summaries:type_name -> akuity.io.kargo.service.v1alpha1.StageSummary + 39, // 28: akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse.stage_summary:type_name -> akuity.io.kargo.service.v1alpha1.StageSummary + 0, // 29: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 200, // 30: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig + 200, // 31: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig + 201, // 32: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 201, // 33: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 0, // 34: akuity.io.kargo.service.v1alpha1.GetPromotionRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 201, // 35: akuity.io.kargo.service.v1alpha1.GetPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 201, // 36: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 0, // 37: akuity.io.kargo.service.v1alpha1.GetProjectRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 202, // 38: akuity.io.kargo.service.v1alpha1.GetProjectResponse.project:type_name -> github.com.akuity.kargo.api.v1alpha1.Project + 202, // 39: akuity.io.kargo.service.v1alpha1.ListProjectsResponse.projects:type_name -> github.com.akuity.kargo.api.v1alpha1.Project + 0, // 40: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 203, // 41: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig + 203, // 42: akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig + 0, // 43: akuity.io.kargo.service.v1alpha1.GetFreightRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 204, // 44: akuity.io.kargo.service.v1alpha1.GetFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight + 204, // 45: akuity.io.kargo.service.v1alpha1.WatchFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight + 201, // 46: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 201, // 47: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 187, // 48: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.groups:type_name -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry + 204, // 49: akuity.io.kargo.service.v1alpha1.FreightList.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight + 205, // 50: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse.warehouses:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse + 0, // 51: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 205, // 52: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse + 205, // 53: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse + 188, // 54: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.DataEntry + 206, // 55: akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap + 206, // 56: akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse.config_maps:type_name -> k8s.io.api.core.v1.ConfigMap + 0, // 57: akuity.io.kargo.service.v1alpha1.GetConfigMapRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 206, // 58: akuity.io.kargo.service.v1alpha1.GetConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap + 189, // 59: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.DataEntry + 206, // 60: akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap + 207, // 61: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 0, // 62: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 207, // 63: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 207, // 64: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 207, // 65: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 207, // 66: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 190, // 67: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.DataEntry + 207, // 68: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 191, // 69: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.DataEntry + 207, // 70: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 208, // 71: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse.analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate + 0, // 72: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 208, // 73: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse.analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate + 209, // 74: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse.cluster_analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate + 0, // 75: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 209, // 76: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse.cluster_analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate + 0, // 77: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 210, // 78: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse.analysis_run:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun + 211, // 79: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse.events:type_name -> k8s.io.api.core.v1.Event + 212, // 80: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse.promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask + 0, // 81: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 212, // 82: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask + 213, // 83: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse.cluster_promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask + 0, // 84: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 213, // 85: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask + 214, // 86: akuity.io.kargo.service.v1alpha1.CreateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 214, // 87: akuity.io.kargo.service.v1alpha1.CreateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 0, // 88: akuity.io.kargo.service.v1alpha1.GetRoleRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 214, // 89: akuity.io.kargo.service.v1alpha1.GetRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 215, // 90: akuity.io.kargo.service.v1alpha1.GetRoleResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources + 216, // 91: akuity.io.kargo.service.v1alpha1.Claims.claims:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Claim + 163, // 92: akuity.io.kargo.service.v1alpha1.GrantRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims + 217, // 93: akuity.io.kargo.service.v1alpha1.GrantRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails + 214, // 94: akuity.io.kargo.service.v1alpha1.GrantResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 214, // 95: akuity.io.kargo.service.v1alpha1.ListRolesResponse.roles:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 215, // 96: akuity.io.kargo.service.v1alpha1.ListRolesResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources + 163, // 97: akuity.io.kargo.service.v1alpha1.RevokeRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims + 217, // 98: akuity.io.kargo.service.v1alpha1.RevokeRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails + 214, // 99: akuity.io.kargo.service.v1alpha1.RevokeResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 214, // 100: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 214, // 101: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 207, // 102: akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse.token_secret:type_name -> k8s.io.api.core.v1.Secret + 0, // 103: akuity.io.kargo.service.v1alpha1.GetAPITokenRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 207, // 104: akuity.io.kargo.service.v1alpha1.GetAPITokenResponse.token_secret:type_name -> k8s.io.api.core.v1.Secret + 207, // 105: akuity.io.kargo.service.v1alpha1.ListAPITokensResponse.token_secrets:type_name -> k8s.io.api.core.v1.Secret + 218, // 106: akuity.io.kargo.service.v1alpha1.RefreshResourceResponse.resource:type_name -> google.protobuf.Any + 6, // 107: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ArgoCDShard + 29, // 108: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.TagMap + 30, // 109: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap + 88, // 110: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.FreightList + 3, // 111: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:input_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoRequest + 5, // 112: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigRequest + 8, // 113: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigRequest + 11, // 114: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:input_type -> akuity.io.kargo.service.v1alpha1.AdminLoginRequest + 13, // 115: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateResourceRequest + 16, // 116: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceRequest + 19, // 117: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceRequest + 22, // 118: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:input_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceRequest + 180, // 119: akuity.io.kargo.service.v1alpha1.KargoService.RefreshResource:input_type -> akuity.io.kargo.service.v1alpha1.RefreshResourceRequest + 25, // 120: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:input_type -> akuity.io.kargo.service.v1alpha1.ListStagesRequest + 42, // 121: akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries:input_type -> akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest + 27, // 122: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:input_type -> akuity.io.kargo.service.v1alpha1.ListImagesRequest + 31, // 123: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:input_type -> akuity.io.kargo.service.v1alpha1.GetStageRequest + 33, // 124: akuity.io.kargo.service.v1alpha1.KargoService.GetStageHealthOutputs:input_type -> akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsRequest + 35, // 125: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:input_type -> akuity.io.kargo.service.v1alpha1.WatchStagesRequest + 44, // 126: akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries:input_type -> akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest + 37, // 127: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:input_type -> akuity.io.kargo.service.v1alpha1.DeleteStageRequest + 46, // 128: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest + 48, // 129: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterConfigRequest + 50, // 130: akuity.io.kargo.service.v1alpha1.KargoService.WatchClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.WatchClusterConfigRequest + 52, // 131: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsRequest + 54, // 132: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest + 56, // 133: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionRequest + 58, // 134: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionRequest + 60, // 135: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:input_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionRequest + 62, // 136: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectRequest + 64, // 137: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectRequest + 66, // 138: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectsRequest + 68, // 139: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest + 70, // 140: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectConfigRequest + 72, // 141: akuity.io.kargo.service.v1alpha1.KargoService.WatchProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.WatchProjectConfigRequest + 74, // 142: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:input_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightRequest + 76, // 143: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:input_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightRequest + 78, // 144: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:input_type -> akuity.io.kargo.service.v1alpha1.GetFreightRequest + 80, // 145: akuity.io.kargo.service.v1alpha1.KargoService.WatchFreight:input_type -> akuity.io.kargo.service.v1alpha1.WatchFreightRequest + 82, // 146: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:input_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageRequest + 84, // 147: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:input_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest + 86, // 148: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:input_type -> akuity.io.kargo.service.v1alpha1.QueryFreightRequest + 89, // 149: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:input_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest + 91, // 150: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:input_type -> akuity.io.kargo.service.v1alpha1.ReverifyRequest + 93, // 151: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:input_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationRequest + 95, // 152: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesRequest + 97, // 153: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseRequest + 99, // 154: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest + 101, // 155: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest + 113, // 156: akuity.io.kargo.service.v1alpha1.KargoService.CreateRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsRequest + 115, // 157: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsRequest + 117, // 158: akuity.io.kargo.service.v1alpha1.KargoService.GetRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest + 119, // 159: akuity.io.kargo.service.v1alpha1.KargoService.ListRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListRepoCredentialsRequest + 121, // 160: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsRequest + 123, // 161: akuity.io.kargo.service.v1alpha1.KargoService.ListGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListGenericCredentialsRequest + 125, // 162: akuity.io.kargo.service.v1alpha1.KargoService.CreateGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest + 127, // 163: akuity.io.kargo.service.v1alpha1.KargoService.UpdateGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest + 129, // 164: akuity.io.kargo.service.v1alpha1.KargoService.DeleteGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsRequest + 103, // 165: akuity.io.kargo.service.v1alpha1.KargoService.CreateConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest + 105, // 166: akuity.io.kargo.service.v1alpha1.KargoService.DeleteConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.DeleteConfigMapRequest + 107, // 167: akuity.io.kargo.service.v1alpha1.KargoService.ListConfigMaps:input_type -> akuity.io.kargo.service.v1alpha1.ListConfigMapsRequest + 109, // 168: akuity.io.kargo.service.v1alpha1.KargoService.GetConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigMapRequest + 111, // 169: akuity.io.kargo.service.v1alpha1.KargoService.UpdateConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest + 131, // 170: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest + 133, // 171: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest + 135, // 172: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest + 137, // 173: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest + 139, // 174: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest + 141, // 175: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest + 143, // 176: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest + 145, // 177: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest + 147, // 178: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest + 149, // 179: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest + 153, // 180: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest + 151, // 181: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest + 155, // 182: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest + 157, // 183: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:input_type -> akuity.io.kargo.service.v1alpha1.CreateRoleRequest + 159, // 184: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleRequest + 161, // 185: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:input_type -> akuity.io.kargo.service.v1alpha1.GetRoleRequest + 164, // 186: akuity.io.kargo.service.v1alpha1.KargoService.Grant:input_type -> akuity.io.kargo.service.v1alpha1.GrantRequest + 166, // 187: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:input_type -> akuity.io.kargo.service.v1alpha1.ListRolesRequest + 168, // 188: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:input_type -> akuity.io.kargo.service.v1alpha1.RevokeRequest + 170, // 189: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleRequest + 172, // 190: akuity.io.kargo.service.v1alpha1.KargoService.CreateAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.CreateAPITokenRequest + 174, // 191: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAPITokenRequest + 176, // 192: akuity.io.kargo.service.v1alpha1.KargoService.GetAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.GetAPITokenRequest + 178, // 193: akuity.io.kargo.service.v1alpha1.KargoService.ListAPITokens:input_type -> akuity.io.kargo.service.v1alpha1.ListAPITokensRequest + 4, // 194: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:output_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoResponse + 7, // 195: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigResponse + 9, // 196: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigResponse + 12, // 197: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:output_type -> akuity.io.kargo.service.v1alpha1.AdminLoginResponse + 15, // 198: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateResourceResponse + 18, // 199: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResponse + 21, // 200: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceResponse + 24, // 201: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:output_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceResponse + 181, // 202: akuity.io.kargo.service.v1alpha1.KargoService.RefreshResource:output_type -> akuity.io.kargo.service.v1alpha1.RefreshResourceResponse + 26, // 203: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:output_type -> akuity.io.kargo.service.v1alpha1.ListStagesResponse + 43, // 204: akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries:output_type -> akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse + 28, // 205: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:output_type -> akuity.io.kargo.service.v1alpha1.ListImagesResponse + 32, // 206: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:output_type -> akuity.io.kargo.service.v1alpha1.GetStageResponse + 34, // 207: akuity.io.kargo.service.v1alpha1.KargoService.GetStageHealthOutputs:output_type -> akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse + 36, // 208: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:output_type -> akuity.io.kargo.service.v1alpha1.WatchStagesResponse + 45, // 209: akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries:output_type -> akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse + 38, // 210: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:output_type -> akuity.io.kargo.service.v1alpha1.DeleteStageResponse + 47, // 211: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse + 49, // 212: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterConfigResponse + 51, // 213: akuity.io.kargo.service.v1alpha1.KargoService.WatchClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse + 53, // 214: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsResponse + 55, // 215: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse + 57, // 216: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionResponse + 59, // 217: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionResponse + 61, // 218: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:output_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionResponse + 63, // 219: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectResponse + 65, // 220: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectResponse + 67, // 221: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectsResponse + 69, // 222: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse + 71, // 223: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectConfigResponse + 73, // 224: akuity.io.kargo.service.v1alpha1.KargoService.WatchProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse + 75, // 225: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:output_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightResponse + 77, // 226: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:output_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightResponse + 79, // 227: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:output_type -> akuity.io.kargo.service.v1alpha1.GetFreightResponse + 81, // 228: akuity.io.kargo.service.v1alpha1.KargoService.WatchFreight:output_type -> akuity.io.kargo.service.v1alpha1.WatchFreightResponse + 83, // 229: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:output_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageResponse + 85, // 230: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:output_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse + 87, // 231: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:output_type -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse + 90, // 232: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:output_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse + 92, // 233: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:output_type -> akuity.io.kargo.service.v1alpha1.ReverifyResponse + 94, // 234: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:output_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationResponse + 96, // 235: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesResponse + 98, // 236: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseResponse + 100, // 237: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse + 102, // 238: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse + 114, // 239: akuity.io.kargo.service.v1alpha1.KargoService.CreateRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse + 116, // 240: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsResponse + 118, // 241: akuity.io.kargo.service.v1alpha1.KargoService.GetRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse + 120, // 242: akuity.io.kargo.service.v1alpha1.KargoService.ListRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse + 122, // 243: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse + 124, // 244: akuity.io.kargo.service.v1alpha1.KargoService.ListGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse + 126, // 245: akuity.io.kargo.service.v1alpha1.KargoService.CreateGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse + 128, // 246: akuity.io.kargo.service.v1alpha1.KargoService.UpdateGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse + 130, // 247: akuity.io.kargo.service.v1alpha1.KargoService.DeleteGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsResponse + 104, // 248: akuity.io.kargo.service.v1alpha1.KargoService.CreateConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse + 106, // 249: akuity.io.kargo.service.v1alpha1.KargoService.DeleteConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.DeleteConfigMapResponse + 108, // 250: akuity.io.kargo.service.v1alpha1.KargoService.ListConfigMaps:output_type -> akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse + 110, // 251: akuity.io.kargo.service.v1alpha1.KargoService.GetConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigMapResponse + 112, // 252: akuity.io.kargo.service.v1alpha1.KargoService.UpdateConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse + 132, // 253: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse + 134, // 254: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse + 136, // 255: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse + 138, // 256: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse + 140, // 257: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse + 142, // 258: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse + 144, // 259: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse + 146, // 260: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse + 148, // 261: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse + 150, // 262: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse + 154, // 263: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse + 152, // 264: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse + 156, // 265: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse + 158, // 266: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:output_type -> akuity.io.kargo.service.v1alpha1.CreateRoleResponse + 160, // 267: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleResponse + 162, // 268: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:output_type -> akuity.io.kargo.service.v1alpha1.GetRoleResponse + 165, // 269: akuity.io.kargo.service.v1alpha1.KargoService.Grant:output_type -> akuity.io.kargo.service.v1alpha1.GrantResponse + 167, // 270: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:output_type -> akuity.io.kargo.service.v1alpha1.ListRolesResponse + 169, // 271: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:output_type -> akuity.io.kargo.service.v1alpha1.RevokeResponse + 171, // 272: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleResponse + 173, // 273: akuity.io.kargo.service.v1alpha1.KargoService.CreateAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse + 175, // 274: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAPITokenResponse + 177, // 275: akuity.io.kargo.service.v1alpha1.KargoService.GetAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.GetAPITokenResponse + 179, // 276: akuity.io.kargo.service.v1alpha1.KargoService.ListAPITokens:output_type -> akuity.io.kargo.service.v1alpha1.ListAPITokensResponse + 194, // [194:277] is the sub-list for method output_type + 111, // [111:194] is the sub-list for method input_type + 111, // [111:111] is the sub-list for extension type_name + 111, // [111:111] is the sub-list for extension extendee + 0, // [0:111] is the sub-list for field type_name } func init() { file_api_service_v1alpha1_service_proto_init() } @@ -14016,7 +14162,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchStagesRequest); i { + switch v := v.(*GetStageHealthOutputsRequest); i { case 0: return &v.state case 1: @@ -14028,7 +14174,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchStagesResponse); i { + switch v := v.(*GetStageHealthOutputsResponse); i { case 0: return &v.state case 1: @@ -14040,7 +14186,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteStageRequest); i { + switch v := v.(*WatchStagesRequest); i { case 0: return &v.state case 1: @@ -14052,7 +14198,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteStageResponse); i { + switch v := v.(*WatchStagesResponse); i { case 0: return &v.state case 1: @@ -14064,7 +14210,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StageSummary); i { + switch v := v.(*DeleteStageRequest); i { case 0: return &v.state case 1: @@ -14076,7 +14222,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StageSpecSummary); i { + switch v := v.(*DeleteStageResponse); i { case 0: return &v.state case 1: @@ -14088,7 +14234,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StageStatusSummary); i { + switch v := v.(*StageSummary); i { case 0: return &v.state case 1: @@ -14100,7 +14246,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListStageSummariesRequest); i { + switch v := v.(*StageSpecSummary); i { case 0: return &v.state case 1: @@ -14112,7 +14258,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListStageSummariesResponse); i { + switch v := v.(*StageStatusSummary); i { case 0: return &v.state case 1: @@ -14124,7 +14270,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchStageSummariesRequest); i { + switch v := v.(*ListStageSummariesRequest); i { case 0: return &v.state case 1: @@ -14136,7 +14282,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchStageSummariesResponse); i { + switch v := v.(*ListStageSummariesResponse); i { case 0: return &v.state case 1: @@ -14148,7 +14294,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetClusterConfigRequest); i { + switch v := v.(*WatchStageSummariesRequest); i { case 0: return &v.state case 1: @@ -14160,7 +14306,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetClusterConfigResponse); i { + switch v := v.(*WatchStageSummariesResponse); i { case 0: return &v.state case 1: @@ -14172,7 +14318,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteClusterConfigRequest); i { + switch v := v.(*GetClusterConfigRequest); i { case 0: return &v.state case 1: @@ -14184,7 +14330,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteClusterConfigResponse); i { + switch v := v.(*GetClusterConfigResponse); i { case 0: return &v.state case 1: @@ -14196,7 +14342,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchClusterConfigRequest); i { + switch v := v.(*DeleteClusterConfigRequest); i { case 0: return &v.state case 1: @@ -14208,7 +14354,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchClusterConfigResponse); i { + switch v := v.(*DeleteClusterConfigResponse); i { case 0: return &v.state case 1: @@ -14220,7 +14366,7 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListPromotionsRequest); i { + switch v := v.(*WatchClusterConfigRequest); i { case 0: return &v.state case 1: @@ -14232,6 +14378,30 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WatchClusterConfigResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_service_v1alpha1_service_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListPromotionsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_service_v1alpha1_service_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPromotionsResponse); i { case 0: return &v.state @@ -14243,7 +14413,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchPromotionsRequest); i { case 0: return &v.state @@ -14255,7 +14425,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchPromotionsResponse); i { case 0: return &v.state @@ -14267,7 +14437,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPromotionRequest); i { case 0: return &v.state @@ -14279,7 +14449,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPromotionResponse); i { case 0: return &v.state @@ -14291,7 +14461,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchPromotionRequest); i { case 0: return &v.state @@ -14303,7 +14473,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchPromotionResponse); i { case 0: return &v.state @@ -14315,7 +14485,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbortPromotionRequest); i { case 0: return &v.state @@ -14327,7 +14497,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbortPromotionResponse); i { case 0: return &v.state @@ -14339,7 +14509,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectRequest); i { case 0: return &v.state @@ -14351,7 +14521,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectResponse); i { case 0: return &v.state @@ -14363,7 +14533,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectRequest); i { case 0: return &v.state @@ -14375,7 +14545,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectResponse); i { case 0: return &v.state @@ -14387,7 +14557,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectsRequest); i { case 0: return &v.state @@ -14399,7 +14569,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectsResponse); i { case 0: return &v.state @@ -14411,7 +14581,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectConfigRequest); i { case 0: return &v.state @@ -14423,7 +14593,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectConfigResponse); i { case 0: return &v.state @@ -14435,7 +14605,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectConfigRequest); i { case 0: return &v.state @@ -14447,7 +14617,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectConfigResponse); i { case 0: return &v.state @@ -14459,7 +14629,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchProjectConfigRequest); i { case 0: return &v.state @@ -14471,7 +14641,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchProjectConfigResponse); i { case 0: return &v.state @@ -14483,7 +14653,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ApproveFreightRequest); i { case 0: return &v.state @@ -14495,7 +14665,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ApproveFreightResponse); i { case 0: return &v.state @@ -14507,7 +14677,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFreightRequest); i { case 0: return &v.state @@ -14519,7 +14689,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFreightResponse); i { case 0: return &v.state @@ -14531,7 +14701,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFreightRequest); i { case 0: return &v.state @@ -14543,7 +14713,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFreightResponse); i { case 0: return &v.state @@ -14555,7 +14725,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchFreightRequest); i { case 0: return &v.state @@ -14567,7 +14737,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchFreightResponse); i { case 0: return &v.state @@ -14579,7 +14749,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PromoteToStageRequest); i { case 0: return &v.state @@ -14591,7 +14761,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PromoteToStageResponse); i { case 0: return &v.state @@ -14603,7 +14773,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PromoteDownstreamRequest); i { case 0: return &v.state @@ -14615,7 +14785,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PromoteDownstreamResponse); i { case 0: return &v.state @@ -14627,7 +14797,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryFreightRequest); i { case 0: return &v.state @@ -14639,7 +14809,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryFreightResponse); i { case 0: return &v.state @@ -14651,7 +14821,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FreightList); i { case 0: return &v.state @@ -14663,7 +14833,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateFreightAliasRequest); i { case 0: return &v.state @@ -14675,7 +14845,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateFreightAliasResponse); i { case 0: return &v.state @@ -14687,7 +14857,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReverifyRequest); i { case 0: return &v.state @@ -14699,7 +14869,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReverifyResponse); i { case 0: return &v.state @@ -14711,7 +14881,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbortVerificationRequest); i { case 0: return &v.state @@ -14723,7 +14893,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbortVerificationResponse); i { case 0: return &v.state @@ -14735,7 +14905,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWarehousesRequest); i { case 0: return &v.state @@ -14747,7 +14917,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWarehousesResponse); i { case 0: return &v.state @@ -14759,7 +14929,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWarehouseRequest); i { case 0: return &v.state @@ -14771,7 +14941,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWarehouseResponse); i { case 0: return &v.state @@ -14783,7 +14953,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchWarehousesRequest); i { case 0: return &v.state @@ -14795,7 +14965,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchWarehousesResponse); i { case 0: return &v.state @@ -14807,7 +14977,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteWarehouseRequest); i { case 0: return &v.state @@ -14819,7 +14989,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteWarehouseResponse); i { case 0: return &v.state @@ -14831,7 +15001,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateConfigMapRequest); i { case 0: return &v.state @@ -14843,7 +15013,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateConfigMapResponse); i { case 0: return &v.state @@ -14855,7 +15025,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteConfigMapRequest); i { case 0: return &v.state @@ -14867,7 +15037,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteConfigMapResponse); i { case 0: return &v.state @@ -14879,7 +15049,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListConfigMapsRequest); i { case 0: return &v.state @@ -14891,7 +15061,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListConfigMapsResponse); i { case 0: return &v.state @@ -14903,7 +15073,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetConfigMapRequest); i { case 0: return &v.state @@ -14915,7 +15085,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetConfigMapResponse); i { case 0: return &v.state @@ -14927,7 +15097,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateConfigMapRequest); i { case 0: return &v.state @@ -14939,7 +15109,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateConfigMapResponse); i { case 0: return &v.state @@ -14951,7 +15121,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRepoCredentialsRequest); i { case 0: return &v.state @@ -14963,7 +15133,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRepoCredentialsResponse); i { case 0: return &v.state @@ -14975,7 +15145,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRepoCredentialsRequest); i { case 0: return &v.state @@ -14987,7 +15157,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRepoCredentialsResponse); i { case 0: return &v.state @@ -14999,7 +15169,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRepoCredentialsRequest); i { case 0: return &v.state @@ -15011,7 +15181,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRepoCredentialsResponse); i { case 0: return &v.state @@ -15023,7 +15193,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRepoCredentialsRequest); i { case 0: return &v.state @@ -15035,7 +15205,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRepoCredentialsResponse); i { case 0: return &v.state @@ -15047,7 +15217,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRepoCredentialsRequest); i { case 0: return &v.state @@ -15059,7 +15229,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRepoCredentialsResponse); i { case 0: return &v.state @@ -15071,7 +15241,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGenericCredentialsRequest); i { case 0: return &v.state @@ -15083,7 +15253,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGenericCredentialsResponse); i { case 0: return &v.state @@ -15095,7 +15265,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateGenericCredentialsRequest); i { case 0: return &v.state @@ -15107,7 +15277,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateGenericCredentialsResponse); i { case 0: return &v.state @@ -15119,7 +15289,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGenericCredentialsRequest); i { case 0: return &v.state @@ -15131,7 +15301,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGenericCredentialsResponse); i { case 0: return &v.state @@ -15143,7 +15313,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteGenericCredentialsRequest); i { case 0: return &v.state @@ -15155,7 +15325,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteGenericCredentialsResponse); i { case 0: return &v.state @@ -15167,7 +15337,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAnalysisTemplatesRequest); i { case 0: return &v.state @@ -15179,7 +15349,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAnalysisTemplatesResponse); i { case 0: return &v.state @@ -15191,7 +15361,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisTemplateRequest); i { case 0: return &v.state @@ -15203,7 +15373,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisTemplateResponse); i { case 0: return &v.state @@ -15215,7 +15385,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAnalysisTemplateRequest); i { case 0: return &v.state @@ -15227,7 +15397,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAnalysisTemplateResponse); i { case 0: return &v.state @@ -15239,7 +15409,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClusterAnalysisTemplatesRequest); i { case 0: return &v.state @@ -15251,7 +15421,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClusterAnalysisTemplatesResponse); i { case 0: return &v.state @@ -15263,7 +15433,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAnalysisTemplateRequest); i { case 0: return &v.state @@ -15275,7 +15445,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAnalysisTemplateResponse); i { case 0: return &v.state @@ -15287,7 +15457,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteClusterAnalysisTemplateRequest); i { case 0: return &v.state @@ -15299,7 +15469,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteClusterAnalysisTemplateResponse); i { case 0: return &v.state @@ -15311,7 +15481,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisRunRequest); i { case 0: return &v.state @@ -15323,7 +15493,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisRunResponse); i { case 0: return &v.state @@ -15335,7 +15505,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisRunLogsRequest); i { case 0: return &v.state @@ -15347,7 +15517,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisRunLogsResponse); i { case 0: return &v.state @@ -15359,7 +15529,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectEventsRequest); i { case 0: return &v.state @@ -15371,7 +15541,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectEventsResponse); i { case 0: return &v.state @@ -15383,7 +15553,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPromotionTasksRequest); i { case 0: return &v.state @@ -15395,7 +15565,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPromotionTasksResponse); i { case 0: return &v.state @@ -15407,7 +15577,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPromotionTaskRequest); i { case 0: return &v.state @@ -15419,7 +15589,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPromotionTaskResponse); i { case 0: return &v.state @@ -15431,7 +15601,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClusterPromotionTasksRequest); i { case 0: return &v.state @@ -15443,7 +15613,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClusterPromotionTasksResponse); i { case 0: return &v.state @@ -15455,7 +15625,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterPromotionTaskRequest); i { case 0: return &v.state @@ -15467,7 +15637,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterPromotionTaskResponse); i { case 0: return &v.state @@ -15479,7 +15649,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRoleRequest); i { case 0: return &v.state @@ -15491,7 +15661,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRoleResponse); i { case 0: return &v.state @@ -15503,7 +15673,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRoleRequest); i { case 0: return &v.state @@ -15515,7 +15685,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRoleResponse); i { case 0: return &v.state @@ -15527,7 +15697,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRoleRequest); i { case 0: return &v.state @@ -15539,7 +15709,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRoleResponse); i { case 0: return &v.state @@ -15551,7 +15721,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Claims); i { case 0: return &v.state @@ -15563,7 +15733,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GrantRequest); i { case 0: return &v.state @@ -15575,7 +15745,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GrantResponse); i { case 0: return &v.state @@ -15587,7 +15757,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRolesRequest); i { case 0: return &v.state @@ -15599,7 +15769,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRolesResponse); i { case 0: return &v.state @@ -15611,7 +15781,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokeRequest); i { case 0: return &v.state @@ -15623,7 +15793,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokeResponse); i { case 0: return &v.state @@ -15635,7 +15805,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRoleRequest); i { case 0: return &v.state @@ -15647,7 +15817,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRoleResponse); i { case 0: return &v.state @@ -15659,7 +15829,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAPITokenRequest); i { case 0: return &v.state @@ -15671,7 +15841,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAPITokenResponse); i { case 0: return &v.state @@ -15683,7 +15853,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAPITokenRequest); i { case 0: return &v.state @@ -15695,7 +15865,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAPITokenResponse); i { case 0: return &v.state @@ -15707,7 +15877,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAPITokenRequest); i { case 0: return &v.state @@ -15719,7 +15889,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAPITokenResponse); i { case 0: return &v.state @@ -15731,7 +15901,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAPITokensRequest); i { case 0: return &v.state @@ -15743,7 +15913,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAPITokensResponse); i { case 0: return &v.state @@ -15755,7 +15925,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RefreshResourceRequest); i { case 0: return &v.state @@ -15767,7 +15937,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RefreshResourceResponse); i { case 0: return &v.state @@ -15802,78 +15972,78 @@ func file_api_service_v1alpha1_service_proto_init() { (*GetStageResponse_Stage)(nil), (*GetStageResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[36].OneofWrappers = []interface{}{} file_api_service_v1alpha1_service_proto_msgTypes[38].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[42].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[44].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[40].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[44].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[46].OneofWrappers = []interface{}{ (*GetClusterConfigResponse_ClusterConfig)(nil), (*GetClusterConfigResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[49].OneofWrappers = []interface{}{} file_api_service_v1alpha1_service_proto_msgTypes[51].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[54].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[53].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[56].OneofWrappers = []interface{}{ (*GetPromotionResponse_Promotion)(nil), (*GetPromotionResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[62].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[64].OneofWrappers = []interface{}{ (*GetProjectResponse_Project)(nil), (*GetProjectResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[63].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[66].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[65].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[68].OneofWrappers = []interface{}{ (*GetProjectConfigResponse_ProjectConfig)(nil), (*GetProjectConfigResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[76].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[78].OneofWrappers = []interface{}{ (*GetFreightResponse_Freight)(nil), (*GetFreightResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[95].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[97].OneofWrappers = []interface{}{ (*GetWarehouseResponse_Warehouse)(nil), (*GetWarehouseResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[107].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[109].OneofWrappers = []interface{}{ (*GetConfigMapResponse_ConfigMap)(nil), (*GetConfigMapResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[115].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[117].OneofWrappers = []interface{}{ (*GetRepoCredentialsResponse_Credentials)(nil), (*GetRepoCredentialsResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[131].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[133].OneofWrappers = []interface{}{ (*GetAnalysisTemplateResponse_AnalysisTemplate)(nil), (*GetAnalysisTemplateResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[137].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[139].OneofWrappers = []interface{}{ (*GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate)(nil), (*GetClusterAnalysisTemplateResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[141].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[143].OneofWrappers = []interface{}{ (*GetAnalysisRunResponse_AnalysisRun)(nil), (*GetAnalysisRunResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[149].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[151].OneofWrappers = []interface{}{ (*GetPromotionTaskResponse_PromotionTask)(nil), (*GetPromotionTaskResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[153].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[155].OneofWrappers = []interface{}{ (*GetClusterPromotionTaskResponse_PromotionTask)(nil), (*GetClusterPromotionTaskResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[159].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[161].OneofWrappers = []interface{}{ (*GetRoleResponse_Role)(nil), (*GetRoleResponse_Resources)(nil), (*GetRoleResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[161].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[163].OneofWrappers = []interface{}{ (*GrantRequest_UserClaims)(nil), (*GrantRequest_ResourceDetails)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[165].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[167].OneofWrappers = []interface{}{ (*RevokeRequest_UserClaims)(nil), (*RevokeRequest_ResourceDetails)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[174].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[176].OneofWrappers = []interface{}{ (*GetAPITokenResponse_TokenSecret)(nil), (*GetAPITokenResponse_Raw)(nil), } @@ -15883,7 +16053,7 @@ func file_api_service_v1alpha1_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_service_v1alpha1_service_proto_rawDesc, NumEnums: 1, - NumMessages: 188, + NumMessages: 191, NumExtensions: 0, NumServices: 1, }, diff --git a/api/service/v1alpha1/service.proto b/api/service/v1alpha1/service.proto index b337e3da07..38211b95d4 100644 --- a/api/service/v1alpha1/service.proto +++ b/api/service/v1alpha1/service.proto @@ -62,6 +62,12 @@ service KargoService { rpc ListImages(ListImagesRequest) returns (ListImagesResponse); // GetStage retrieves details of a specific stage. rpc GetStage(GetStageRequest) returns (GetStageResponse); + // GetStageHealthOutputs returns the raw health output blob for the + // specified Stages in a project. Intended for clients that use + // ListStageSummaries for the list and need to resolve per-argocd-app + // health only for the Stages currently in viewport. Stages that do not + // exist or have no health output recorded are omitted from the response. + rpc GetStageHealthOutputs(GetStageHealthOutputsRequest) returns (GetStageHealthOutputsResponse); // WatchStages provides a streaming interface to monitor stage changes. rpc WatchStages(WatchStagesRequest) returns (stream WatchStagesResponse); // WatchStageSummaries provides a streaming interface to monitor stage @@ -515,6 +521,24 @@ message GetStageResponse { } } +// GetStageHealthOutputsRequest is the request for fetching the raw health +// output blob of one or more Stages within a project. +message GetStageHealthOutputsRequest { + // project is the name of the project containing the Stages. + string project = 1; + // stage_names is the list of Stage names whose health outputs to return. + // Order is irrelevant; duplicates are deduplicated by the server. + repeated string stage_names = 2 [json_name = "stageNames"]; +} + +// GetStageHealthOutputsResponse contains per-Stage raw health output blobs. +message GetStageHealthOutputsResponse { + // health_outputs maps Stage name to the raw bytes of its + // Stage.status.health.output.raw field. Stages that do not exist in the + // project or have no health output recorded are omitted from the map. + map health_outputs = 1 [json_name = "healthOutputs"]; +} + // WatchStagesRequest is the request for watching stage changes via streaming. message WatchStagesRequest { // project is the name of the project whose stages should be watched. diff --git a/api/service/v1alpha1/svcv1alpha1connect/service.connect.go b/api/service/v1alpha1/svcv1alpha1connect/service.connect.go index e9f7b04d22..b6ca3740d7 100644 --- a/api/service/v1alpha1/svcv1alpha1connect/service.connect.go +++ b/api/service/v1alpha1/svcv1alpha1connect/service.connect.go @@ -67,6 +67,9 @@ const ( KargoServiceListImagesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListImages" // KargoServiceGetStageProcedure is the fully-qualified name of the KargoService's GetStage RPC. KargoServiceGetStageProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/GetStage" + // KargoServiceGetStageHealthOutputsProcedure is the fully-qualified name of the KargoService's + // GetStageHealthOutputs RPC. + KargoServiceGetStageHealthOutputsProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/GetStageHealthOutputs" // KargoServiceWatchStagesProcedure is the fully-qualified name of the KargoService's WatchStages // RPC. KargoServiceWatchStagesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/WatchStages" @@ -282,6 +285,7 @@ var ( kargoServiceListStageSummariesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("ListStageSummaries") kargoServiceListImagesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("ListImages") kargoServiceGetStageMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("GetStage") + kargoServiceGetStageHealthOutputsMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("GetStageHealthOutputs") kargoServiceWatchStagesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("WatchStages") kargoServiceWatchStageSummariesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("WatchStageSummaries") kargoServiceDeleteStageMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("DeleteStage") @@ -386,6 +390,12 @@ type KargoServiceClient interface { ListImages(context.Context, *connect.Request[v1alpha1.ListImagesRequest]) (*connect.Response[v1alpha1.ListImagesResponse], error) // GetStage retrieves details of a specific stage. GetStage(context.Context, *connect.Request[v1alpha1.GetStageRequest]) (*connect.Response[v1alpha1.GetStageResponse], error) + // GetStageHealthOutputs returns the raw health output blob for the + // specified Stages in a project. Intended for clients that use + // ListStageSummaries for the list and need to resolve per-argocd-app + // health only for the Stages currently in viewport. Stages that do not + // exist or have no health output recorded are omitted from the response. + GetStageHealthOutputs(context.Context, *connect.Request[v1alpha1.GetStageHealthOutputsRequest]) (*connect.Response[v1alpha1.GetStageHealthOutputsResponse], error) // WatchStages provides a streaming interface to monitor stage changes. WatchStages(context.Context, *connect.Request[v1alpha1.WatchStagesRequest]) (*connect.ServerStreamForClient[v1alpha1.WatchStagesResponse], error) // WatchStageSummaries provides a streaming interface to monitor stage @@ -631,6 +641,12 @@ func NewKargoServiceClient(httpClient connect.HTTPClient, baseURL string, opts . connect.WithSchema(kargoServiceGetStageMethodDescriptor), connect.WithClientOptions(opts...), ), + getStageHealthOutputs: connect.NewClient[v1alpha1.GetStageHealthOutputsRequest, v1alpha1.GetStageHealthOutputsResponse]( + httpClient, + baseURL+KargoServiceGetStageHealthOutputsProcedure, + connect.WithSchema(kargoServiceGetStageHealthOutputsMethodDescriptor), + connect.WithClientOptions(opts...), + ), watchStages: connect.NewClient[v1alpha1.WatchStagesRequest, v1alpha1.WatchStagesResponse]( httpClient, baseURL+KargoServiceWatchStagesProcedure, @@ -1063,6 +1079,7 @@ type kargoServiceClient struct { listStageSummaries *connect.Client[v1alpha1.ListStageSummariesRequest, v1alpha1.ListStageSummariesResponse] listImages *connect.Client[v1alpha1.ListImagesRequest, v1alpha1.ListImagesResponse] getStage *connect.Client[v1alpha1.GetStageRequest, v1alpha1.GetStageResponse] + getStageHealthOutputs *connect.Client[v1alpha1.GetStageHealthOutputsRequest, v1alpha1.GetStageHealthOutputsResponse] watchStages *connect.Client[v1alpha1.WatchStagesRequest, v1alpha1.WatchStagesResponse] watchStageSummaries *connect.Client[v1alpha1.WatchStageSummariesRequest, v1alpha1.WatchStageSummariesResponse] deleteStage *connect.Client[v1alpha1.DeleteStageRequest, v1alpha1.DeleteStageResponse] @@ -1200,6 +1217,11 @@ func (c *kargoServiceClient) GetStage(ctx context.Context, req *connect.Request[ return c.getStage.CallUnary(ctx, req) } +// GetStageHealthOutputs calls akuity.io.kargo.service.v1alpha1.KargoService.GetStageHealthOutputs. +func (c *kargoServiceClient) GetStageHealthOutputs(ctx context.Context, req *connect.Request[v1alpha1.GetStageHealthOutputsRequest]) (*connect.Response[v1alpha1.GetStageHealthOutputsResponse], error) { + return c.getStageHealthOutputs.CallUnary(ctx, req) +} + // WatchStages calls akuity.io.kargo.service.v1alpha1.KargoService.WatchStages. func (c *kargoServiceClient) WatchStages(ctx context.Context, req *connect.Request[v1alpha1.WatchStagesRequest]) (*connect.ServerStreamForClient[v1alpha1.WatchStagesResponse], error) { return c.watchStages.CallServerStream(ctx, req) @@ -1589,6 +1611,12 @@ type KargoServiceHandler interface { ListImages(context.Context, *connect.Request[v1alpha1.ListImagesRequest]) (*connect.Response[v1alpha1.ListImagesResponse], error) // GetStage retrieves details of a specific stage. GetStage(context.Context, *connect.Request[v1alpha1.GetStageRequest]) (*connect.Response[v1alpha1.GetStageResponse], error) + // GetStageHealthOutputs returns the raw health output blob for the + // specified Stages in a project. Intended for clients that use + // ListStageSummaries for the list and need to resolve per-argocd-app + // health only for the Stages currently in viewport. Stages that do not + // exist or have no health output recorded are omitted from the response. + GetStageHealthOutputs(context.Context, *connect.Request[v1alpha1.GetStageHealthOutputsRequest]) (*connect.Response[v1alpha1.GetStageHealthOutputsResponse], error) // WatchStages provides a streaming interface to monitor stage changes. WatchStages(context.Context, *connect.Request[v1alpha1.WatchStagesRequest], *connect.ServerStream[v1alpha1.WatchStagesResponse]) error // WatchStageSummaries provides a streaming interface to monitor stage @@ -1830,6 +1858,12 @@ func NewKargoServiceHandler(svc KargoServiceHandler, opts ...connect.HandlerOpti connect.WithSchema(kargoServiceGetStageMethodDescriptor), connect.WithHandlerOptions(opts...), ) + kargoServiceGetStageHealthOutputsHandler := connect.NewUnaryHandler( + KargoServiceGetStageHealthOutputsProcedure, + svc.GetStageHealthOutputs, + connect.WithSchema(kargoServiceGetStageHealthOutputsMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) kargoServiceWatchStagesHandler := connect.NewServerStreamHandler( KargoServiceWatchStagesProcedure, svc.WatchStages, @@ -2272,6 +2306,8 @@ func NewKargoServiceHandler(svc KargoServiceHandler, opts ...connect.HandlerOpti kargoServiceListImagesHandler.ServeHTTP(w, r) case KargoServiceGetStageProcedure: kargoServiceGetStageHandler.ServeHTTP(w, r) + case KargoServiceGetStageHealthOutputsProcedure: + kargoServiceGetStageHealthOutputsHandler.ServeHTTP(w, r) case KargoServiceWatchStagesProcedure: kargoServiceWatchStagesHandler.ServeHTTP(w, r) case KargoServiceWatchStageSummariesProcedure: @@ -2471,6 +2507,10 @@ func (UnimplementedKargoServiceHandler) GetStage(context.Context, *connect.Reque return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.GetStage is not implemented")) } +func (UnimplementedKargoServiceHandler) GetStageHealthOutputs(context.Context, *connect.Request[v1alpha1.GetStageHealthOutputsRequest]) (*connect.Response[v1alpha1.GetStageHealthOutputsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.GetStageHealthOutputs is not implemented")) +} + func (UnimplementedKargoServiceHandler) WatchStages(context.Context, *connect.Request[v1alpha1.WatchStagesRequest], *connect.ServerStream[v1alpha1.WatchStagesResponse]) error { return connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.WatchStages is not implemented")) } diff --git a/docs/docs/90-api-documentation.md b/docs/docs/90-api-documentation.md index de0f22c8a2..4a842bfd37 100644 --- a/docs/docs/90-api-documentation.md +++ b/docs/docs/90-api-documentation.md @@ -28,6 +28,7 @@ Stability is not guaranteed. | ListStageSummaries | [ListStageSummariesRequest](#akuity-io-kargo-service-v1alpha1-ListStageSummariesRequest) | [ListStageSummariesResponse](#akuity-io-kargo-service-v1alpha1-ListStageSummariesResponse) | | ListImages | [ListImagesRequest](#akuity-io-kargo-service-v1alpha1-ListImagesRequest) | [ListImagesResponse](#akuity-io-kargo-service-v1alpha1-ListImagesResponse) | | GetStage | [GetStageRequest](#akuity-io-kargo-service-v1alpha1-GetStageRequest) | [GetStageResponse](#akuity-io-kargo-service-v1alpha1-GetStageResponse) | +| GetStageHealthOutputs | [GetStageHealthOutputsRequest](#akuity-io-kargo-service-v1alpha1-GetStageHealthOutputsRequest) | [GetStageHealthOutputsResponse](#akuity-io-kargo-service-v1alpha1-GetStageHealthOutputsResponse) | | WatchStages | [WatchStagesRequest](#akuity-io-kargo-service-v1alpha1-WatchStagesRequest) | [WatchStagesResponse](#akuity-io-kargo-service-v1alpha1-WatchStagesResponse)(stream) | | WatchStageSummaries | [WatchStageSummariesRequest](#akuity-io-kargo-service-v1alpha1-WatchStageSummariesRequest) | [WatchStageSummariesResponse](#akuity-io-kargo-service-v1alpha1-WatchStageSummariesResponse)(stream) | | DeleteStage | [DeleteStageRequest](#akuity-io-kargo-service-v1alpha1-DeleteStageRequest) | [DeleteStageResponse](#akuity-io-kargo-service-v1alpha1-DeleteStageResponse) | @@ -871,6 +872,32 @@ Stability is not guaranteed. | resources | [github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources](#github-com-akuity-kargo-api-rbac-v1alpha1-RoleResources) | resources is a structured RoleResources object encapsulating the Kargo Role's underlying Kubernetes resources. | | raw | [bytes](#bytes) | raw is a raw YAML or JSON representation of the requested resource(s). | + + +### GetStageHealthOutputsRequest + GetStageHealthOutputsRequest is the request for fetching the raw health output blob of one or more Stages within a project. +| Field | Type | Description | +| ----- | ---- | ----------- | +| project | [string](#string) | project is the name of the project containing the Stages. | +| stage_names | [string](#string) | stage_names is the list of Stage names whose health outputs to return. Order is irrelevant; duplicates are deduplicated by the server. | + + + +### GetStageHealthOutputsResponse + GetStageHealthOutputsResponse contains per-Stage raw health output blobs. +| Field | Type | Description | +| ----- | ---- | ----------- | +| health_outputs | [GetStageHealthOutputsResponse.HealthOutputsEntry](#akuity-io-kargo-service-v1alpha1-GetStageHealthOutputsResponse-HealthOutputsEntry) | health_outputs maps Stage name to the raw bytes of its Stage.status.health.output.raw field. Stages that do not exist in the project or have no health output recorded are omitted from the map. | + + + +### GetStageHealthOutputsResponse.HealthOutputsEntry + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [string](#string) | | +| value | [bytes](#bytes) | | + ### GetStageRequest diff --git a/pkg/client/generated/core/core_client.go b/pkg/client/generated/core/core_client.go index dc26c47444..2c43a93ae6 100644 --- a/pkg/client/generated/core/core_client.go +++ b/pkg/client/generated/core/core_client.go @@ -97,6 +97,8 @@ type ClientService interface { GetStage(params *GetStageParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*GetStageOK, error) + GetStageHealthOutputs(params *GetStageHealthOutputsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*GetStageHealthOutputsOK, error) + GetSystemConfigMap(params *GetSystemConfigMapParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*GetSystemConfigMapOK, error) GetWarehouse(params *GetWarehouseParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*GetWarehouseOK, error) @@ -1180,6 +1182,58 @@ func (a *Client) GetStage(params *GetStageParams, authInfo runtime.ClientAuthInf panic(msg) } +/* + GetStageHealthOutputs gets stage health outputs + + Return the raw health output blob for the specified Stages + +in a project. Stages that do not exist or have no recorded +health output are omitted from the response. Intended for +clients that use ListStageSummaries (which omits the output +blob) and need to lazily resolve health for Stages currently +in viewport. +*/ +func (a *Client) GetStageHealthOutputs(params *GetStageHealthOutputsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*GetStageHealthOutputsOK, error) { + // NOTE: parameters are not validated before sending + if params == nil { + params = NewGetStageHealthOutputsParams() + } + op := &runtime.ClientOperation{ + ID: "GetStageHealthOutputs", + Method: "GET", + PathPattern: "/v1beta1/projects/{project}/stage-health-outputs", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http"}, + Params: params, + Reader: &GetStageHealthOutputsReader{formats: a.formats}, + AuthInfo: authInfo, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + + // only one success response has to be checked + success, ok := result.(*GetStageHealthOutputsOK) + if ok { + return success, nil + } + + // unexpected success response. + + // no default response is defined. + // + // safeguard: normally, in the absence of a default response, unknown success responses return an error above: so this is a codegen issue + msg := fmt.Sprintf("unexpected success response for GetStageHealthOutputs: API contract not enforced by server. Client expected to get an error, but got: %T", result) + panic(msg) +} + /* GetSystemConfigMap retrieves a system level config map diff --git a/pkg/client/generated/core/get_stage_health_outputs_parameters.go b/pkg/client/generated/core/get_stage_health_outputs_parameters.go new file mode 100644 index 0000000000..0f8f56d485 --- /dev/null +++ b/pkg/client/generated/core/get_stage_health_outputs_parameters.go @@ -0,0 +1,194 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package core + +import ( + "context" + "net/http" + "time" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// NewGetStageHealthOutputsParams creates a new GetStageHealthOutputsParams object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. +func NewGetStageHealthOutputsParams() *GetStageHealthOutputsParams { + return &GetStageHealthOutputsParams{ + timeout: cr.DefaultTimeout, + } +} + +// NewGetStageHealthOutputsParamsWithTimeout creates a new GetStageHealthOutputsParams object +// with the ability to set a timeout on a request. +func NewGetStageHealthOutputsParamsWithTimeout(timeout time.Duration) *GetStageHealthOutputsParams { + return &GetStageHealthOutputsParams{ + timeout: timeout, + } +} + +// NewGetStageHealthOutputsParamsWithContext creates a new GetStageHealthOutputsParams object +// with the ability to set a context for a request. +func NewGetStageHealthOutputsParamsWithContext(ctx context.Context) *GetStageHealthOutputsParams { + return &GetStageHealthOutputsParams{ + Context: ctx, + } +} + +// NewGetStageHealthOutputsParamsWithHTTPClient creates a new GetStageHealthOutputsParams object +// with the ability to set a custom HTTPClient for a request. +func NewGetStageHealthOutputsParamsWithHTTPClient(client *http.Client) *GetStageHealthOutputsParams { + return &GetStageHealthOutputsParams{ + HTTPClient: client, + } +} + +/* +GetStageHealthOutputsParams contains all the parameters to send to the API endpoint + + for the get stage health outputs operation. + + Typically these are written to a http.Request. +*/ +type GetStageHealthOutputsParams struct { + + /* Project. + + Project name + */ + Project string + + /* StageNames. + + Stage names to fetch health outputs for + */ + StageNames []string + + timeout time.Duration + Context context.Context + HTTPClient *http.Client +} + +// WithDefaults hydrates default values in the get stage health outputs params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *GetStageHealthOutputsParams) WithDefaults() *GetStageHealthOutputsParams { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the get stage health outputs params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *GetStageHealthOutputsParams) SetDefaults() { + // no default values defined for this parameter +} + +// WithTimeout adds the timeout to the get stage health outputs params +func (o *GetStageHealthOutputsParams) WithTimeout(timeout time.Duration) *GetStageHealthOutputsParams { + o.SetTimeout(timeout) + return o +} + +// SetTimeout adds the timeout to the get stage health outputs params +func (o *GetStageHealthOutputsParams) SetTimeout(timeout time.Duration) { + o.timeout = timeout +} + +// WithContext adds the context to the get stage health outputs params +func (o *GetStageHealthOutputsParams) WithContext(ctx context.Context) *GetStageHealthOutputsParams { + o.SetContext(ctx) + return o +} + +// SetContext adds the context to the get stage health outputs params +func (o *GetStageHealthOutputsParams) SetContext(ctx context.Context) { + o.Context = ctx +} + +// WithHTTPClient adds the HTTPClient to the get stage health outputs params +func (o *GetStageHealthOutputsParams) WithHTTPClient(client *http.Client) *GetStageHealthOutputsParams { + o.SetHTTPClient(client) + return o +} + +// SetHTTPClient adds the HTTPClient to the get stage health outputs params +func (o *GetStageHealthOutputsParams) SetHTTPClient(client *http.Client) { + o.HTTPClient = client +} + +// WithProject adds the project to the get stage health outputs params +func (o *GetStageHealthOutputsParams) WithProject(project string) *GetStageHealthOutputsParams { + o.SetProject(project) + return o +} + +// SetProject adds the project to the get stage health outputs params +func (o *GetStageHealthOutputsParams) SetProject(project string) { + o.Project = project +} + +// WithStageNames adds the stageNames to the get stage health outputs params +func (o *GetStageHealthOutputsParams) WithStageNames(stageNames []string) *GetStageHealthOutputsParams { + o.SetStageNames(stageNames) + return o +} + +// SetStageNames adds the stageNames to the get stage health outputs params +func (o *GetStageHealthOutputsParams) SetStageNames(stageNames []string) { + o.StageNames = stageNames +} + +// WriteToRequest writes these params to a swagger request +func (o *GetStageHealthOutputsParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { + + if err := r.SetTimeout(o.timeout); err != nil { + return err + } + var res []error + + // path param project + if err := r.SetPathParam("project", o.Project); err != nil { + return err + } + + if o.StageNames != nil { + + // binding items for stageNames + joinedStageNames := o.bindParamStageNames(reg) + + // query array param stageNames + if err := r.SetQueryParam("stageNames", joinedStageNames...); err != nil { + return err + } + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +// bindParamGetStageHealthOutputs binds the parameter stageNames +func (o *GetStageHealthOutputsParams) bindParamStageNames(formats strfmt.Registry) []string { + stageNamesIR := o.StageNames + + var stageNamesIC []string + for _, stageNamesIIR := range stageNamesIR { // explode []string + + stageNamesIIV := stageNamesIIR // string as string + stageNamesIC = append(stageNamesIC, stageNamesIIV) + } + + // items.CollectionFormat: "multi" + stageNamesIS := swag.JoinByFormat(stageNamesIC, "multi") + + return stageNamesIS +} diff --git a/pkg/client/generated/core/get_stage_health_outputs_responses.go b/pkg/client/generated/core/get_stage_health_outputs_responses.go new file mode 100644 index 0000000000..954dee2e12 --- /dev/null +++ b/pkg/client/generated/core/get_stage_health_outputs_responses.go @@ -0,0 +1,104 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package core + +import ( + "encoding/json" + stderrors "errors" + "fmt" + "io" + + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + + "github.com/akuity/kargo/pkg/client/generated/models" +) + +// GetStageHealthOutputsReader is a Reader for the GetStageHealthOutputs structure. +type GetStageHealthOutputsReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *GetStageHealthOutputsReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (any, error) { + switch response.Code() { + case 200: + result := NewGetStageHealthOutputsOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + return nil, runtime.NewAPIError("[GET /v1beta1/projects/{project}/stage-health-outputs] GetStageHealthOutputs", response, response.Code()) + } +} + +// NewGetStageHealthOutputsOK creates a GetStageHealthOutputsOK with default headers values +func NewGetStageHealthOutputsOK() *GetStageHealthOutputsOK { + return &GetStageHealthOutputsOK{} +} + +/* +GetStageHealthOutputsOK describes a response with status code 200, with default header values. + +OK +*/ +type GetStageHealthOutputsOK struct { + Payload *models.GithubComAkuityKargoAPIServiceV1alpha1GetStageHealthOutputsResponse +} + +// IsSuccess returns true when this get stage health outputs o k response has a 2xx status code +func (o *GetStageHealthOutputsOK) IsSuccess() bool { + return true +} + +// IsRedirect returns true when this get stage health outputs o k response has a 3xx status code +func (o *GetStageHealthOutputsOK) IsRedirect() bool { + return false +} + +// IsClientError returns true when this get stage health outputs o k response has a 4xx status code +func (o *GetStageHealthOutputsOK) IsClientError() bool { + return false +} + +// IsServerError returns true when this get stage health outputs o k response has a 5xx status code +func (o *GetStageHealthOutputsOK) IsServerError() bool { + return false +} + +// IsCode returns true when this get stage health outputs o k response a status code equal to that given +func (o *GetStageHealthOutputsOK) IsCode(code int) bool { + return code == 200 +} + +// Code gets the status code for the get stage health outputs o k response +func (o *GetStageHealthOutputsOK) Code() int { + return 200 +} + +func (o *GetStageHealthOutputsOK) Error() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1beta1/projects/{project}/stage-health-outputs][%d] getStageHealthOutputsOK %s", 200, payload) +} + +func (o *GetStageHealthOutputsOK) String() string { + payload, _ := json.Marshal(o.Payload) + return fmt.Sprintf("[GET /v1beta1/projects/{project}/stage-health-outputs][%d] getStageHealthOutputsOK %s", 200, payload) +} + +func (o *GetStageHealthOutputsOK) GetPayload() *models.GithubComAkuityKargoAPIServiceV1alpha1GetStageHealthOutputsResponse { + return o.Payload +} + +func (o *GetStageHealthOutputsOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(models.GithubComAkuityKargoAPIServiceV1alpha1GetStageHealthOutputsResponse) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && !stderrors.Is(err, io.EOF) { + return err + } + + return nil +} diff --git a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_get_stage_health_outputs_response.go b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_get_stage_health_outputs_response.go new file mode 100644 index 0000000000..0ffb541c21 --- /dev/null +++ b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_get_stage_health_outputs_response.go @@ -0,0 +1,49 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package models + +import ( + "context" + + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// GithubComAkuityKargoAPIServiceV1alpha1GetStageHealthOutputsResponse github com akuity kargo api service v1alpha1 get stage health outputs response +// +// swagger:model github_com_akuity_kargo_api_service_v1alpha1.GetStageHealthOutputsResponse +type GithubComAkuityKargoAPIServiceV1alpha1GetStageHealthOutputsResponse struct { + + // health_outputs maps Stage name to the raw bytes of its + // Stage.status.health.output.raw field. Stages that do not exist in the + // project or have no health output recorded are omitted from the map. + HealthOutputs map[string][]int32 `json:"health_outputs,omitempty"` +} + +// Validate validates this github com akuity kargo api service v1alpha1 get stage health outputs response +func (m *GithubComAkuityKargoAPIServiceV1alpha1GetStageHealthOutputsResponse) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this github com akuity kargo api service v1alpha1 get stage health outputs response based on context it is used +func (m *GithubComAkuityKargoAPIServiceV1alpha1GetStageHealthOutputsResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (m *GithubComAkuityKargoAPIServiceV1alpha1GetStageHealthOutputsResponse) MarshalBinary() ([]byte, error) { + if m == nil { + return nil, nil + } + return swag.WriteJSON(m) +} + +// UnmarshalBinary interface implementation +func (m *GithubComAkuityKargoAPIServiceV1alpha1GetStageHealthOutputsResponse) UnmarshalBinary(b []byte) error { + var res GithubComAkuityKargoAPIServiceV1alpha1GetStageHealthOutputsResponse + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *m = res + return nil +} diff --git a/pkg/server/get_stage_health_outputs_v1alpha1.go b/pkg/server/get_stage_health_outputs_v1alpha1.go new file mode 100644 index 0000000000..eb02e0e13f --- /dev/null +++ b/pkg/server/get_stage_health_outputs_v1alpha1.go @@ -0,0 +1,143 @@ +package server + +import ( + "context" + "fmt" + "net/http" + + "connectrpc.com/connect" + "github.com/gin-gonic/gin" + "sigs.k8s.io/controller-runtime/pkg/client" + + svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" + kargoapi "github.com/akuity/kargo/api/v1alpha1" +) + +// maxStageHealthOutputsBatch is a soft limit on the number of Stage names a +// single GetStageHealthOutputs call may request. Chosen to comfortably +// exceed the largest known project scale while still bounding worst-case +// response size. +const maxStageHealthOutputsBatch = 1000 + +// GetStageHealthOutputs returns the raw health output blob for the specified +// Stages in a project. Stages that do not exist or have no health output +// recorded are omitted from the response map. Intended for clients that use +// ListStageSummaries for the list and lazily resolve per-argocd-app health +// for Stages currently in viewport. +func (s *server) GetStageHealthOutputs( + ctx context.Context, + req *connect.Request[svcv1alpha1.GetStageHealthOutputsRequest], +) (*connect.Response[svcv1alpha1.GetStageHealthOutputsResponse], error) { + project := req.Msg.GetProject() + if err := validateFieldNotEmpty("project", project); err != nil { + return nil, err + } + + if err := s.validateProjectExists(ctx, project); err != nil { + return nil, err + } + + wanted := uniqueNonEmptyStrings(req.Msg.GetStageNames()) + if len(wanted) == 0 { + return connect.NewResponse(&svcv1alpha1.GetStageHealthOutputsResponse{}), nil + } + if len(wanted) > maxStageHealthOutputsBatch { + return nil, connect.NewError( + connect.CodeInvalidArgument, + fmt.Errorf( + "stage_names exceeds maximum batch size of %d (got %d)", + maxStageHealthOutputsBatch, len(wanted), + ), + ) + } + + var list kargoapi.StageList + if err := s.client.List(ctx, &list, client.InNamespace(project)); err != nil { + return nil, fmt.Errorf("list stages: %w", err) + } + + outputs := make(map[string][]byte, len(wanted)) + for i := range list.Items { + st := &list.Items[i] + if _, want := wanted[st.Name]; !want { + continue + } + if st.Status.Health == nil || st.Status.Health.Output == nil { + continue + } + outputs[st.Name] = st.Status.Health.Output.Raw + } + + return connect.NewResponse(&svcv1alpha1.GetStageHealthOutputsResponse{ + HealthOutputs: outputs, + }), nil +} + +// @id GetStageHealthOutputs +// @Summary Get Stage Health Outputs +// @Description Return the raw health output blob for the specified Stages +// @Description in a project. Stages that do not exist or have no recorded +// @Description health output are omitted from the response. Intended for +// @Description clients that use ListStageSummaries (which omits the output +// @Description blob) and need to lazily resolve health for Stages currently +// @Description in viewport. +// @Tags Core, Project-Level +// @Security BearerAuth +// @Produce json +// @Param project path string true "Project name" +// @Param stageNames query []string true "Stage names to fetch health outputs for" collectionFormat(multi) +// @Success 200 {object} svcv1alpha1.GetStageHealthOutputsResponse +// @Router /v1beta1/projects/{project}/stage-health-outputs [get] +func (s *server) getStageHealthOutputs(c *gin.Context) { + ctx := c.Request.Context() + project := c.Param("project") + + wanted := uniqueNonEmptyStrings(c.QueryArray("stageNames")) + if len(wanted) == 0 { + c.JSON(http.StatusOK, &svcv1alpha1.GetStageHealthOutputsResponse{}) + return + } + if len(wanted) > maxStageHealthOutputsBatch { + _ = c.Error(fmt.Errorf( + "stageNames exceeds maximum batch size of %d (got %d)", + maxStageHealthOutputsBatch, len(wanted), + )) + return + } + + list := &kargoapi.StageList{} + if err := s.client.List(ctx, list, client.InNamespace(project)); err != nil { + _ = c.Error(err) + return + } + + outputs := make(map[string][]byte, len(wanted)) + for i := range list.Items { + st := &list.Items[i] + if _, want := wanted[st.Name]; !want { + continue + } + if st.Status.Health == nil || st.Status.Health.Output == nil { + continue + } + outputs[st.Name] = st.Status.Health.Output.Raw + } + + c.JSON(http.StatusOK, &svcv1alpha1.GetStageHealthOutputsResponse{ + HealthOutputs: outputs, + }) +} + +// uniqueNonEmptyStrings returns a set of the non-empty entries in names, +// deduplicated. Returns an empty (non-nil) map if no non-empty entries are +// present. +func uniqueNonEmptyStrings(names []string) map[string]struct{} { + set := make(map[string]struct{}, len(names)) + for _, n := range names { + if n == "" { + continue + } + set[n] = struct{}{} + } + return set +} diff --git a/pkg/server/get_stage_health_outputs_v1alpha1_test.go b/pkg/server/get_stage_health_outputs_v1alpha1_test.go new file mode 100644 index 0000000000..bfca49c8b6 --- /dev/null +++ b/pkg/server/get_stage_health_outputs_v1alpha1_test.go @@ -0,0 +1,263 @@ +package server + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "testing" + + "connectrpc.com/connect" + "github.com/stretchr/testify/require" + corev1 "k8s.io/api/core/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/client/fake" + + svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" + kargoapi "github.com/akuity/kargo/api/v1alpha1" + "github.com/akuity/kargo/pkg/server/config" + "github.com/akuity/kargo/pkg/server/kubernetes" + "github.com/akuity/kargo/pkg/server/validation" +) + +func TestGetStageHealthOutputs(t *testing.T) { + const projectName = "kargo-demo" + + stageWithOutput := func(name, raw string) *kargoapi.Stage { + return &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Namespace: projectName, Name: name}, + Status: kargoapi.StageStatus{ + Health: &kargoapi.Health{ + Status: kargoapi.HealthStateHealthy, + Output: &apiextensionsv1.JSON{Raw: []byte(raw)}, + }, + }, + } + } + stageHealthNoOutput := &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Namespace: projectName, Name: "no-output"}, + Status: kargoapi.StageStatus{ + Health: &kargoapi.Health{Status: kargoapi.HealthStateHealthy}, + }, + } + stageNoHealth := &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Namespace: projectName, Name: "no-health"}, + } + + testCases := map[string]struct { + req *svcv1alpha1.GetStageHealthOutputsRequest + assert func(*testing.T, *connect.Response[svcv1alpha1.GetStageHealthOutputsResponse], error) + }{ + "empty project": { + req: &svcv1alpha1.GetStageHealthOutputsRequest{Project: ""}, + assert: func(t *testing.T, _ *connect.Response[svcv1alpha1.GetStageHealthOutputsResponse], err error) { + require.Error(t, err) + require.Equal(t, connect.CodeInvalidArgument, connect.CodeOf(err)) + }, + }, + "non-existing project": { + req: &svcv1alpha1.GetStageHealthOutputsRequest{Project: "does-not-exist"}, + assert: func(t *testing.T, _ *connect.Response[svcv1alpha1.GetStageHealthOutputsResponse], err error) { + require.Error(t, err) + require.Equal(t, connect.CodeNotFound, connect.CodeOf(err)) + }, + }, + "empty stage_names returns empty map, not error": { + req: &svcv1alpha1.GetStageHealthOutputsRequest{Project: projectName}, + assert: func(t *testing.T, res *connect.Response[svcv1alpha1.GetStageHealthOutputsResponse], err error) { + require.NoError(t, err) + require.Empty(t, res.Msg.GetHealthOutputs()) + }, + }, + "all empty strings treated as empty": { + req: &svcv1alpha1.GetStageHealthOutputsRequest{ + Project: projectName, + StageNames: []string{"", ""}, + }, + assert: func(t *testing.T, res *connect.Response[svcv1alpha1.GetStageHealthOutputsResponse], err error) { + require.NoError(t, err) + require.Empty(t, res.Msg.GetHealthOutputs()) + }, + }, + "returns outputs for existing stages with health output": { + req: &svcv1alpha1.GetStageHealthOutputsRequest{ + Project: projectName, + StageNames: []string{"a", "b"}, + }, + assert: func(t *testing.T, res *connect.Response[svcv1alpha1.GetStageHealthOutputsResponse], err error) { + require.NoError(t, err) + got := res.Msg.GetHealthOutputs() + require.Len(t, got, 2) + require.Equal(t, []byte(`{"app":"a"}`), got["a"]) + require.Equal(t, []byte(`{"app":"b"}`), got["b"]) + }, + }, + "unknown stage names are silently omitted": { + req: &svcv1alpha1.GetStageHealthOutputsRequest{ + Project: projectName, + StageNames: []string{"a", "unknown"}, + }, + assert: func(t *testing.T, res *connect.Response[svcv1alpha1.GetStageHealthOutputsResponse], err error) { + require.NoError(t, err) + got := res.Msg.GetHealthOutputs() + require.Len(t, got, 1) + require.Contains(t, got, "a") + require.NotContains(t, got, "unknown") + }, + }, + "stage with health but no output is omitted": { + req: &svcv1alpha1.GetStageHealthOutputsRequest{ + Project: projectName, + StageNames: []string{"no-output"}, + }, + assert: func(t *testing.T, res *connect.Response[svcv1alpha1.GetStageHealthOutputsResponse], err error) { + require.NoError(t, err) + require.Empty(t, res.Msg.GetHealthOutputs()) + }, + }, + "stage with no health is omitted": { + req: &svcv1alpha1.GetStageHealthOutputsRequest{ + Project: projectName, + StageNames: []string{"no-health"}, + }, + assert: func(t *testing.T, res *connect.Response[svcv1alpha1.GetStageHealthOutputsResponse], err error) { + require.NoError(t, err) + require.Empty(t, res.Msg.GetHealthOutputs()) + }, + }, + "duplicate stage names are deduplicated": { + req: &svcv1alpha1.GetStageHealthOutputsRequest{ + Project: projectName, + StageNames: []string{"a", "a", "a"}, + }, + assert: func(t *testing.T, res *connect.Response[svcv1alpha1.GetStageHealthOutputsResponse], err error) { + require.NoError(t, err) + got := res.Msg.GetHealthOutputs() + require.Len(t, got, 1) + require.Equal(t, []byte(`{"app":"a"}`), got["a"]) + }, + }, + "batch size cap exceeded": { + req: &svcv1alpha1.GetStageHealthOutputsRequest{ + Project: projectName, + StageNames: manyNames(maxStageHealthOutputsBatch + 1), + }, + assert: func(t *testing.T, _ *connect.Response[svcv1alpha1.GetStageHealthOutputsResponse], err error) { + require.Error(t, err) + require.Equal(t, connect.CodeInvalidArgument, connect.CodeOf(err)) + }, + }, + } + + for name, tc := range testCases { + t.Run(name, func(t *testing.T) { + t.Parallel() + ctx := t.Context() + kubeClient, err := kubernetes.NewClient( + ctx, + &rest.Config{}, + kubernetes.ClientOptions{ + SkipAuthorization: true, + NewInternalClient: func( + context.Context, *rest.Config, *runtime.Scheme, + ) (client.WithWatch, error) { + return fake.NewClientBuilder(). + WithScheme(mustNewScheme()). + WithObjects( + &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{ + Name: projectName, + Labels: map[string]string{kargoapi.LabelKeyProject: kargoapi.LabelValueTrue}, + }}, + &kargoapi.Project{ObjectMeta: metav1.ObjectMeta{Name: projectName}}, + ). + WithLists(&kargoapi.StageList{Items: []kargoapi.Stage{ + *stageWithOutput("a", `{"app":"a"}`), + *stageWithOutput("b", `{"app":"b"}`), + *stageHealthNoOutput, + *stageNoHealth, + }}). + Build(), nil + }, + }, + ) + require.NoError(t, err) + + svr := &server{client: kubeClient} + svr.externalValidateProjectFn = validation.ValidateProject + + res, err := svr.GetStageHealthOutputs(ctx, connect.NewRequest(tc.req)) + tc.assert(t, res, err) + }) + } +} + +func manyNames(n int) []string { + out := make([]string, n) + for i := range n { + out[i] = fmt.Sprintf("stage-%d", i) + } + return out +} + +func Test_server_getStageHealthOutputs(t *testing.T) { + testProject := &kargoapi.Project{ObjectMeta: metav1.ObjectMeta{Name: "fake-project"}} + + stageWithOutput := func(name, raw string) *kargoapi.Stage { + return &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Namespace: testProject.Name, Name: name}, + Status: kargoapi.StageStatus{ + Health: &kargoapi.Health{ + Status: kargoapi.HealthStateHealthy, + Output: &apiextensionsv1.JSON{Raw: []byte(raw)}, + }, + }, + } + } + + testRESTEndpoint( + t, &config.ServerConfig{}, + http.MethodGet, "/v1beta1/projects/"+testProject.Name+"/stage-health-outputs", + []restTestCase{ + { + name: "project does not exist", + assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { + require.Equal(t, http.StatusNotFound, w.Code) + }, + }, + { + name: "empty stageNames returns empty map", + clientBuilder: fake.NewClientBuilder().WithObjects(testProject), + assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { + require.Equal(t, http.StatusOK, w.Code) + resp := &svcv1alpha1.GetStageHealthOutputsResponse{} + require.NoError(t, json.Unmarshal(w.Body.Bytes(), resp)) + require.Empty(t, resp.GetHealthOutputs()) + }, + }, + { + name: "returns only requested stages that have output", + url: "/v1beta1/projects/" + testProject.Name + "/stage-health-outputs?stageNames=a&stageNames=c", + clientBuilder: fake.NewClientBuilder().WithObjects( + testProject, + stageWithOutput("a", `{"app":"a"}`), + stageWithOutput("b", `{"app":"b"}`), + ), + assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { + require.Equal(t, http.StatusOK, w.Code) + resp := &svcv1alpha1.GetStageHealthOutputsResponse{} + require.NoError(t, json.Unmarshal(w.Body.Bytes(), resp)) + got := resp.GetHealthOutputs() + require.Len(t, got, 1) + require.Equal(t, []byte(`{"app":"a"}`), got["a"]) + require.NotContains(t, got, "b") + require.NotContains(t, got, "c") + }, + }, + }, + ) +} diff --git a/pkg/server/rest_router.go b/pkg/server/rest_router.go index af54a4a81c..dcee54e431 100644 --- a/pkg/server/rest_router.go +++ b/pkg/server/rest_router.go @@ -191,6 +191,7 @@ func (s *server) setupRESTRouter(ctx context.Context) *gin.Engine { // Stages project.GET("/stages", s.listStages) project.GET("/stage-summaries", s.listStageSummaries) + project.GET("/stage-health-outputs", s.getStageHealthOutputs) project.GET("/stages/:stage", s.getStage) project.POST("/stages/:stage/refresh", s.refreshStage) project.DELETE("/stages/:stage", s.deleteStage) diff --git a/pkg/server/stage_to_summary.go b/pkg/server/stage_to_summary.go index 6e957c5705..e986ed51d7 100644 --- a/pkg/server/stage_to_summary.go +++ b/pkg/server/stage_to_summary.go @@ -12,6 +12,12 @@ import ( // stageToSummary converts a Stage to the lightweight StageSummary projection // returned by ListStageSummaries and WatchStageSummaries. See the StageSummary // proto definition for the rationale. Returns nil if stage is nil. +// +// The returned summary's Status.Health.Output is always nil even when the +// source Stage has a populated output. That raw blob (the argocd-shaped +// health output) is routinely ~2 KB per Stage and dominates the per-stage +// cost of the summary. Clients that need it should call +// GetStageHealthOutputs for the subset of Stages currently in viewport. func stageToSummary(stage *kargoapi.Stage) *svcv1alpha1.StageSummary { if stage == nil { return nil @@ -31,7 +37,7 @@ func stageToSummary(stage *kargoapi.Stage) *svcv1alpha1.StageSummary { LastHandledRefresh: stage.Status.LastHandledRefresh, CurrentPromotion: stage.Status.CurrentPromotion.DeepCopy(), LastPromotion: stage.Status.LastPromotion.DeepCopy(), - Health: stage.Status.Health.DeepCopy(), + Health: healthWithoutOutput(stage.Status.Health), ObservedGeneration: stage.Status.ObservedGeneration, AutoPromotionEnabled: stage.Status.AutoPromotionEnabled, }, @@ -65,6 +71,18 @@ func cloneFreightRequests(src []kargoapi.FreightRequest) []*kargoapi.FreightRequ return dst } +// healthWithoutOutput returns a deep copy of the given Health with the +// Output field cleared. Returns nil if src is nil. See stageToSummary for +// the motivation. +func healthWithoutOutput(src *kargoapi.Health) *kargoapi.Health { + if src == nil { + return nil + } + h := src.DeepCopy() + h.Output = nil + return h +} + // cloneConditions returns a deep copy of the given Conditions as a slice of // pointers (matching the shape of the generated protobuf field). Each // metav1.Condition contains only primitive fields, so a shallow per-element diff --git a/pkg/server/stage_to_summary_test.go b/pkg/server/stage_to_summary_test.go index 7face7beaa..52a2bfeb71 100644 --- a/pkg/server/stage_to_summary_test.go +++ b/pkg/server/stage_to_summary_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/stretchr/testify/require" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" kargoapi "github.com/akuity/kargo/api/v1alpha1" @@ -118,6 +119,30 @@ func TestStageToSummary(t *testing.T) { require.True(t, got.Status.AutoPromotionEnabled) }) + t.Run("health output is stripped while status is preserved", func(t *testing.T) { + t.Parallel() + s := &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Name: "s"}, + Status: kargoapi.StageStatus{ + Health: &kargoapi.Health{ + Status: kargoapi.HealthStateHealthy, + Issues: []string{"transient blip"}, + Output: &apiextensionsv1.JSON{ + Raw: []byte(`[{"applicationStatuses":[{"Name":"app","health":{"status":"Healthy"}}]}]`), + }, + }, + }, + } + got := stageToSummary(s) + require.NotNil(t, got.Status.Health) + require.Equal(t, kargoapi.HealthStateHealthy, got.Status.Health.Status) + require.Equal(t, []string{"transient blip"}, got.Status.Health.Issues) + require.Nil(t, got.Status.Health.Output, + "health.output must be nil in summary; fetch via GetStageHealthOutputs") + // Source Stage must be unchanged. + require.NotNil(t, s.Status.Health.Output) + }) + t.Run("empty freight history omits current freight", func(t *testing.T) { t.Parallel() s := &kargoapi.Stage{ diff --git a/swagger.json b/swagger.json index dde998359d..df3b307d15 100644 --- a/swagger.json +++ b/swagger.json @@ -2314,6 +2314,53 @@ } } }, + "/v1beta1/projects/{project}/stage-health-outputs": { + "get": { + "security": [ + { + "BearerAuth": [] + } + ], + "description": "Return the raw health output blob for the specified Stages\nin a project. Stages that do not exist or have no recorded\nhealth output are omitted from the response. Intended for\nclients that use ListStageSummaries (which omits the output\nblob) and need to lazily resolve health for Stages currently\nin viewport.", + "produces": [ + "application/json" + ], + "tags": [ + "Core", + "Project-Level" + ], + "summary": "Get Stage Health Outputs", + "operationId": "GetStageHealthOutputs", + "parameters": [ + { + "type": "string", + "description": "Project name", + "name": "project", + "in": "path", + "required": true + }, + { + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi", + "description": "Stage names to fetch health outputs for", + "name": "stageNames", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/github_com_akuity_kargo_api_service_v1alpha1.GetStageHealthOutputsResponse" + } + } + } + } + }, "/v1beta1/projects/{project}/stage-summaries": { "get": { "security": [ @@ -5174,6 +5221,22 @@ } } }, + "github_com_akuity_kargo_api_service_v1alpha1.GetStageHealthOutputsResponse": { + "type": "object", + "properties": { + "health_outputs": { + "description": "health_outputs maps Stage name to the raw bytes of its\nStage.status.health.output.raw field. Stages that do not exist in the\nproject or have no health output recorded are omitted from the map.", + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + } + } + } + }, "github_com_akuity_kargo_api_service_v1alpha1.ListStageSummariesResponse": { "type": "object", "properties": { diff --git a/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts b/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts index eb8b50d162..c0993afc55 100644 --- a/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts +++ b/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts @@ -102,6 +102,17 @@ export const listImages = KargoService.method.listImages; */ export const getStage = KargoService.method.getStage; +/** + * GetStageHealthOutputs returns the raw health output blob for the + * specified Stages in a project. Intended for clients that use + * ListStageSummaries for the list and need to resolve per-argocd-app + * health only for the Stages currently in viewport. Stages that do not + * exist or have no health output recorded are omitted from the response. + * + * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.GetStageHealthOutputs + */ +export const getStageHealthOutputs = KargoService.method.getStageHealthOutputs; + /** * DeleteStage removes a stage from the system. * diff --git a/ui/src/gen/api/service/v1alpha1/service_pb.ts b/ui/src/gen/api/service/v1alpha1/service_pb.ts index ca8a8cc230..809146b0dd 100644 --- a/ui/src/gen/api/service/v1alpha1/service_pb.ts +++ b/ui/src/gen/api/service/v1alpha1/service_pb.ts @@ -22,7 +22,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file api/service/v1alpha1/service.proto. */ export const file_api_service_v1alpha1_service: GenFile = /*@__PURE__*/ - fileDesc("CiJhcGkvc2VydmljZS92MWFscGhhMS9zZXJ2aWNlLnByb3RvEiBha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMSKrAQoRQ29tcG9uZW50VmVyc2lvbnMSQgoGc2VydmVyGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm9IAIgBARI/CgNjbGkYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5WZXJzaW9uSW5mb0gBiAEBQgkKB19zZXJ2ZXJCBgoEX2NsaSKyAQoLVmVyc2lvbkluZm8SDwoHdmVyc2lvbhgBIAEoCRISCgpnaXRfY29tbWl0GAIgASgJEhYKDmdpdF90cmVlX2RpcnR5GAMgASgIEi4KCmJ1aWxkX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdvX3ZlcnNpb24YBSABKAkSEAoIY29tcGlsZXIYBiABKAkSEAoIcGxhdGZvcm0YByABKAkiFwoVR2V0VmVyc2lvbkluZm9SZXF1ZXN0Il0KFkdldFZlcnNpb25JbmZvUmVzcG9uc2USQwoMdmVyc2lvbl9pbmZvGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm8iEgoQR2V0Q29uZmlnUmVxdWVzdCItCgtBcmdvQ0RTaGFyZBILCgN1cmwYASABKAkSEQoJbmFtZXNwYWNlGAIgASgJIsgCChFHZXRDb25maWdSZXNwb25zZRJcCg1hcmdvY2Rfc2hhcmRzGAEgAygLMkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UuQXJnb2NkU2hhcmRzRW50cnkSIQoZc2VjcmV0X21hbmFnZW1lbnRfZW5hYmxlZBgCIAEoCBIiChpzeXN0ZW1fcmVzb3VyY2VzX25hbWVzcGFjZRgDIAEoCRIqCiJoYXNfYW5hbHlzaXNfcnVuX2xvZ3NfdXJsX3RlbXBsYXRlGAQgASgIGmIKEUFyZ29jZFNoYXJkc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFyZ29DRFNoYXJkOgI4ASIYChZHZXRQdWJsaWNDb25maWdSZXF1ZXN0Io4BChdHZXRQdWJsaWNDb25maWdSZXNwb25zZRJBCgtvaWRjX2NvbmZpZxgBIAEoCzIsLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLk9JRENDb25maWcSHQoVYWRtaW5fYWNjb3VudF9lbmFibGVkGAIgASgIEhEKCXNraXBfYXV0aBgDIAEoCCJaCgpPSURDQ29uZmlnEhIKCmlzc3Vlcl91cmwYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1jbGlfY2xpZW50X2lkGAQgASgJIiUKEUFkbWluTG9naW5SZXF1ZXN0EhAKCHBhc3N3b3JkGAEgASgJIiYKEkFkbWluTG9naW5SZXNwb25zZRIQCghpZF90b2tlbhgBIAEoCSIpChVDcmVhdGVSZXNvdXJjZVJlcXVlc3QSEAoIbWFuaWZlc3QYASABKAwiVgoUQ3JlYXRlUmVzb3VyY2VSZXN1bHQSIwoZY3JlYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgBIAEoDEgAEg8KBWVycm9yGAIgASgJSABCCAoGcmVzdWx0ImEKFkNyZWF0ZVJlc291cmNlUmVzcG9uc2USRwoHcmVzdWx0cxgBIAMoCzI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzdWx0IjEKHUNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIoMBChxDcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0EiMKGWNyZWF0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAIgASgMSAASDwoFZXJyb3IYAyABKAlIAEIICgZyZXN1bHQicQoeQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEk8KB3Jlc3VsdHMYASADKAsyPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0IikKFVVwZGF0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCJWChRVcGRhdGVSZXNvdXJjZVJlc3VsdBIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASDwoFZXJyb3IYAiABKAlIAEIICgZyZXN1bHQiYQoWVXBkYXRlUmVzb3VyY2VSZXNwb25zZRJHCgdyZXN1bHRzGAEgAygLMjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXN1bHQiKQoVRGVsZXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIlYKFERlbGV0ZVJlc291cmNlUmVzdWx0EiMKGWRlbGV0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIPCgVlcnJvchgCIAEoCUgAQggKBnJlc3VsdCJhChZEZWxldGVSZXNvdXJjZVJlc3BvbnNlEkcKB3Jlc3VsdHMYASADKAsyNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3VsdCIkChFMaXN0U3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIlEKEkxpc3RTdGFnZXNSZXNwb25zZRI7CgZzdGFnZXMYASADKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2UiJAoRTGlzdEltYWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSK/AQoSTGlzdEltYWdlc1Jlc3BvbnNlElAKBmltYWdlcxgCIAMoCzJALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RJbWFnZXNSZXNwb25zZS5JbWFnZXNFbnRyeRpXCgtJbWFnZXNFbnRyeRILCgNrZXkYASABKAkSNwoFdmFsdWUYAiABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5UYWdNYXA6AjgBIqgBCgZUYWdNYXASQAoEdGFncxgBIAMoCzIyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlRhZ01hcC5UYWdzRW50cnkaXAoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRI+CgV2YWx1ZRgCIAEoCzIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkltYWdlU3RhZ2VNYXA6AjgBIosBCg1JbWFnZVN0YWdlTWFwEksKBnN0YWdlcxgBIAMoCzI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkltYWdlU3RhZ2VNYXAuU3RhZ2VzRW50cnkaLQoLU3RhZ2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ASJtCg9HZXRTdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJpChBHZXRTdGFnZVJlc3BvbnNlEjwKBXN0YWdlGAEgASgLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0YWdlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjMKEldhdGNoU3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiXwoTV2F0Y2hTdGFnZXNSZXNwb25zZRI6CgVzdGFnZRgBIAEoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZRIMCgR0eXBlGAIgASgJIjMKEkRlbGV0ZVN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiFQoTRGVsZXRlU3RhZ2VSZXNwb25zZSKKAgoMU3RhZ2VTdW1tYXJ5EkcKCG1ldGFkYXRhGAEgASgLMjAuazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLk9iamVjdE1ldGFIAIgBARJFCgRzcGVjGAIgASgLMjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuU3RhZ2VTcGVjU3VtbWFyeUgBiAEBEkkKBnN0YXR1cxgDIAEoCzI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlN0YWdlU3RhdHVzU3VtbWFyeUgCiAEBQgsKCV9tZXRhZGF0YUIHCgVfc3BlY0IJCgdfc3RhdHVzIqoBChBTdGFnZVNwZWNTdW1tYXJ5Eg0KBXNoYXJkGAEgASgJEk8KEXJlcXVlc3RlZF9mcmVpZ2h0GAIgAygLMjQuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRSZXF1ZXN0EhwKFHByb21vdGlvbl9zdGVwX2NvdW50GAMgASgFEhgKEGhhc192ZXJpZmljYXRpb24YBCABKAgixwQKElN0YWdlU3RhdHVzU3VtbWFyeRJDCgpjb25kaXRpb25zGAEgAygLMi8uazhzLmlvLmFwaW1hY2hpbmVyeS5wa2cuYXBpcy5tZXRhLnYxLkNvbmRpdGlvbhIcChRsYXN0X2hhbmRsZWRfcmVmcmVzaBgCIAEoCRJVCg9jdXJyZW50X2ZyZWlnaHQYAyABKAsyNy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodENvbGxlY3Rpb25IAIgBARJYChFjdXJyZW50X3Byb21vdGlvbhgEIAEoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25SZWZlcmVuY2VIAYgBARJVCg5sYXN0X3Byb21vdGlvbhgFIAEoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25SZWZlcmVuY2VIAogBARJBCgZoZWFsdGgYBiABKAsyLC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuSGVhbHRoSAOIAQESGwoTb2JzZXJ2ZWRfZ2VuZXJhdGlvbhgHIAEoAxIeChZhdXRvX3Byb21vdGlvbl9lbmFibGVkGAggASgIQhIKEF9jdXJyZW50X2ZyZWlnaHRCFAoSX2N1cnJlbnRfcHJvbW90aW9uQhEKD19sYXN0X3Byb21vdGlvbkIJCgdfaGVhbHRoIkUKGUxpc3RTdGFnZVN1bW1hcmllc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIXCg9mcmVpZ2h0X29yaWdpbnMYAiADKAkifwoaTGlzdFN0YWdlU3VtbWFyaWVzUmVzcG9uc2USRwoPc3RhZ2Vfc3VtbWFyaWVzGAEgAygLMi4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuU3RhZ2VTdW1tYXJ5EhgKEHJlc291cmNlX3ZlcnNpb24YAiABKAkibgoaV2F0Y2hTdGFnZVN1bW1hcmllc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhcKD2ZyZWlnaHRfb3JpZ2lucxgDIAMoCRIYChByZXNvdXJjZV92ZXJzaW9uGAQgASgJIokBChtXYXRjaFN0YWdlU3VtbWFyaWVzUmVzcG9uc2USSgoNc3RhZ2Vfc3VtbWFyeRgBIAEoCzIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlN0YWdlU3VtbWFyeUgAiAEBEgwKBHR5cGUYAiABKAlCEAoOX3N0YWdlX3N1bW1hcnkiVgoXR2V0Q2x1c3RlckNvbmZpZ1JlcXVlc3QSOwoGZm9ybWF0GAEgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IoIBChhHZXRDbHVzdGVyQ29uZmlnUmVzcG9uc2USTQoOY2x1c3Rlcl9jb25maWcYASABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2x1c3RlckNvbmZpZ0gAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCIcChpEZWxldGVDbHVzdGVyQ29uZmlnUmVxdWVzdCIdChtEZWxldGVDbHVzdGVyQ29uZmlnUmVzcG9uc2UiGwoZV2F0Y2hDbHVzdGVyQ29uZmlnUmVxdWVzdCJ3ChpXYXRjaENsdXN0ZXJDb25maWdSZXNwb25zZRJLCg5jbHVzdGVyX2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyQ29uZmlnEgwKBHR5cGUYAiABKAkiRgoVTGlzdFByb21vdGlvbnNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSEgoFc3RhZ2UYAiABKAlIAIgBAUIICgZfc3RhZ2UiXQoWTGlzdFByb21vdGlvbnNSZXNwb25zZRJDCgpwcm9tb3Rpb25zGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbiJHChZXYXRjaFByb21vdGlvbnNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSEgoFc3RhZ2UYAiABKAlIAIgBAUIICgZfc3RhZ2UiawoXV2F0Y2hQcm9tb3Rpb25zUmVzcG9uc2USQgoJcHJvbW90aW9uGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbhIMCgR0eXBlGAIgASgJInEKE0dldFByb21vdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJ1ChRHZXRQcm9tb3Rpb25SZXNwb25zZRJECglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjYKFVdhdGNoUHJvbW90aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiagoWV2F0Y2hQcm9tb3Rpb25SZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uEgwKBHR5cGUYAiABKAkiNgoVQWJvcnRQcm9tb3Rpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIYChZBYm9ydFByb21vdGlvblJlc3BvbnNlIiQKFERlbGV0ZVByb2plY3RSZXF1ZXN0EgwKBG5hbWUYASABKAkiFwoVRGVsZXRlUHJvamVjdFJlc3BvbnNlIl4KEUdldFByb2plY3RSZXF1ZXN0EgwKBG5hbWUYASABKAkSOwoGZm9ybWF0GAIgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0Im8KEkdldFByb2plY3RSZXNwb25zZRJACgdwcm9qZWN0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQioAEKE0xpc3RQcm9qZWN0c1JlcXVlc3QSFgoJcGFnZV9zaXplGAEgASgFSACIAQESEQoEcGFnZRgCIAEoBUgBiAEBEhMKBmZpbHRlchgDIAEoCUgCiAEBEgsKA3VpZBgEIAMoCRIRCgRtaW5lGAUgASgISAOIAQFCDAoKX3BhZ2Vfc2l6ZUIHCgVfcGFnZUIJCgdfZmlsdGVyQgcKBV9taW5lImYKFExpc3RQcm9qZWN0c1Jlc3BvbnNlEj8KCHByb2plY3RzGAEgAygLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3QSDQoFdG90YWwYAiABKAUiZwoXR2V0UHJvamVjdENvbmZpZ1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRI7CgZmb3JtYXQYAiABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiggEKGEdldFByb2plY3RDb25maWdSZXNwb25zZRJNCg5wcm9qZWN0X2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9qZWN0Q29uZmlnSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0Ii0KGkRlbGV0ZVByb2plY3RDb25maWdSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiHQobRGVsZXRlUHJvamVjdENvbmZpZ1Jlc3BvbnNlIiwKGVdhdGNoUHJvamVjdENvbmZpZ1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJ3ChpXYXRjaFByb2plY3RDb25maWdSZXNwb25zZRJLCg5wcm9qZWN0X2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9qZWN0Q29uZmlnEgwKBHR5cGUYAiABKAkiVAoVQXBwcm92ZUZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRINCgVhbGlhcxgDIAEoCRINCgVzdGFnZRgEIAEoCSIYChZBcHByb3ZlRnJlaWdodFJlc3BvbnNlIkQKFERlbGV0ZUZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRINCgVhbGlhcxgDIAEoCSIXChVEZWxldGVGcmVpZ2h0UmVzcG9uc2UifgoRR2V0RnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJEjsKBmZvcm1hdBgEIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJvChJHZXRGcmVpZ2h0UmVzcG9uc2USQAoHZnJlaWdodBgBIAEoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IiYKE1dhdGNoRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJkChRXYXRjaEZyZWlnaHRSZXNwb25zZRI+CgdmcmVpZ2h0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHQSDAoEdHlwZRgCIAEoCSJfChVQcm9tb3RlVG9TdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCRIPCgdmcmVpZ2h0GAMgASgJEhUKDWZyZWlnaHRfYWxpYXMYBCABKAkiXAoWUHJvbW90ZVRvU3RhZ2VSZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uImIKGFByb21vdGVEb3duc3RyZWFtUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJEg8KB2ZyZWlnaHQYAyABKAkSFQoNZnJlaWdodF9hbGlhcxgEIAEoCSJgChlQcm9tb3RlRG93bnN0cmVhbVJlc3BvbnNlEkMKCnByb21vdGlvbnMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uIooBChNRdWVyeUZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkSEAoIZ3JvdXBfYnkYAyABKAkSDQoFZ3JvdXAYBCABKAkSEAoIb3JkZXJfYnkYBSABKAkSDwoHcmV2ZXJzZRgGIAEoCBIPCgdvcmlnaW5zGAcgAygJIsgBChRRdWVyeUZyZWlnaHRSZXNwb25zZRJSCgZncm91cHMYASADKAsyQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5RdWVyeUZyZWlnaHRSZXNwb25zZS5Hcm91cHNFbnRyeRpcCgtHcm91cHNFbnRyeRILCgNrZXkYASABKAkSPAoFdmFsdWUYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5GcmVpZ2h0TGlzdDoCOAEiTQoLRnJlaWdodExpc3QSPgoHZnJlaWdodBgBIAMoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0ImAKGVVwZGF0ZUZyZWlnaHRBbGlhc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCW9sZF9hbGlhcxgDIAEoCRIRCgluZXdfYWxpYXMYBCABKAkiHAoaVXBkYXRlRnJlaWdodEFsaWFzUmVzcG9uc2UiMQoPUmV2ZXJpZnlSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkiEgoQUmV2ZXJpZnlSZXNwb25zZSI6ChhBYm9ydFZlcmlmaWNhdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCSIbChlBYm9ydFZlcmlmaWNhdGlvblJlc3BvbnNlIigKFUxpc3RXYXJlaG91c2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIl0KFkxpc3RXYXJlaG91c2VzUmVzcG9uc2USQwoKd2FyZWhvdXNlcxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5XYXJlaG91c2UicQoTR2V0V2FyZWhvdXNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0InUKFEdldFdhcmVob3VzZVJlc3BvbnNlEkQKCXdhcmVob3VzZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5XYXJlaG91c2VIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNwoWV2F0Y2hXYXJlaG91c2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiawoXV2F0Y2hXYXJlaG91c2VzUmVzcG9uc2USQgoJd2FyZWhvdXNlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZRIMCgR0eXBlGAIgASgJIjcKFkRlbGV0ZVdhcmVob3VzZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhkKF0RlbGV0ZVdhcmVob3VzZVJlc3BvbnNlIvQBChZDcmVhdGVDb25maWdNYXBSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSUAoEZGF0YRgFIAMoCzJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUNvbmZpZ01hcFJlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgGIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJMChdDcmVhdGVDb25maWdNYXBSZXNwb25zZRIxCgpjb25maWdfbWFwGAEgASgLMh0uazhzLmlvLmFwaS5jb3JlLnYxLkNvbmZpZ01hcCJNChZEZWxldGVDb25maWdNYXBSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkiGQoXRGVsZXRlQ29uZmlnTWFwUmVzcG9uc2UiPgoVTGlzdENvbmZpZ01hcHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgCIAEoCBIPCgdwcm9qZWN0GAEgASgJIkwKFkxpc3RDb25maWdNYXBzUmVzcG9uc2USMgoLY29uZmlnX21hcHMYASADKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwIocBChNHZXRDb25maWdNYXBSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgEIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImQKFEdldENvbmZpZ01hcFJlc3BvbnNlEjMKCmNvbmZpZ19tYXAYASABKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IvQBChZVcGRhdGVDb25maWdNYXBSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSUAoEZGF0YRgFIAMoCzJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUNvbmZpZ01hcFJlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgGIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJMChdVcGRhdGVDb25maWdNYXBSZXNwb25zZRIxCgpjb25maWdfbWFwGAEgASgLMh0uazhzLmlvLmFwaS5jb3JlLnYxLkNvbmZpZ01hcCLKAQocQ3JlYXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YCCABKAkSDAoEdHlwZRgDIAEoCRIZCghyZXBvX3VybBgEIAEoCVIHcmVwb1VSTBIpChFyZXBvX3VybF9pc19yZWdleBgFIAEoCFIOcmVwb1VSTElzUmVnZXgSEAoIdXNlcm5hbWUYBiABKAkSEAoIcGFzc3dvcmQYByABKAkiUAodQ3JlYXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0Ij0KHERlbGV0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIh8KHURlbGV0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlIncKGUdldFJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJoChpHZXRSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIxCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiLQoaTGlzdFJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJOChtMaXN0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASADKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IsoBChxVcGRhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIMCgR0eXBlGAMgASgJEhkKCHJlcG9fdXJsGAQgASgJUgdyZXBvVVJMEikKEXJlcG9fdXJsX2lzX3JlZ2V4GAUgASgIUg5yZXBvVVJMSXNSZWdleBIQCgh1c2VybmFtZRgGIAEoCRIQCghwYXNzd29yZBgHIAEoCSJQCh1VcGRhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiRgodTGlzdEdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAIgASgIEg8KB3Byb2plY3QYASABKAkiUQoeTGlzdEdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgAygLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCKGAgofQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYBiABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJElkKBGRhdGEYBCADKAsySy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0LkRhdGFFbnRyeRIRCglyZXBsaWNhdGUYBSABKAgaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiUwogQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IoYCCh9VcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgGIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSWQoEZGF0YRgEIAMoCzJLLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgFIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJTCiBVcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiVgofRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAyABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIiIKIERlbGV0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlIi8KHExpc3RBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSKCAQodTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USYQoSYW5hbHlzaXNfdGVtcGxhdGVzGAEgAygLMkUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkFuYWx5c2lzVGVtcGxhdGUieAoaR2V0QW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKaAQobR2V0QW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEmIKEWFuYWx5c2lzX3RlbXBsYXRlGAEgASgLMkUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkFuYWx5c2lzVGVtcGxhdGVIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiPgodRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIiAKHkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZSIlCiNMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdCKzAQokTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1Jlc3BvbnNlEooBChpjbHVzdGVyX2FuYWx5c2lzX3RlbXBsYXRlcxgBIAMoCzJMLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5DbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVIYY2x1c3RlcmFuYWx5c2lzVGVtcGxhdGVzIm4KIUdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKwAQoiR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRJxChljbHVzdGVyX2FuYWx5c2lzX3RlbXBsYXRlGAEgASgLMkwuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjQKJERlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIMCgRuYW1lGAIgASgJIicKJURlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2UidQoVR2V0QW5hbHlzaXNSdW5SZXF1ZXN0EhEKCW5hbWVzcGFjZRgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKLAQoWR2V0QW5hbHlzaXNSdW5SZXNwb25zZRJYCgxhbmFseXNpc19ydW4YASABKAsyQC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNSdW5IABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiaQoZR2V0QW5hbHlzaXNSdW5Mb2dzUmVxdWVzdBIRCgluYW1lc3BhY2UYASABKAkSDAoEbmFtZRgCIAEoCRITCgttZXRyaWNfbmFtZRgDIAEoCRIWCg5jb250YWluZXJfbmFtZRgEIAEoCSIrChpHZXRBbmFseXNpc1J1bkxvZ3NSZXNwb25zZRINCgVjaHVuaxgBIAEoCSIrChhMaXN0UHJvamVjdEV2ZW50c1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJGChlMaXN0UHJvamVjdEV2ZW50c1Jlc3BvbnNlEikKBmV2ZW50cxgBIAMoCzIZLms4cy5pby5hcGkuY29yZS52MS5FdmVudCIsChlMaXN0UHJvbW90aW9uVGFza3NSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiagoaTGlzdFByb21vdGlvblRhc2tzUmVzcG9uc2USTAoPcHJvbW90aW9uX3Rhc2tzGAEgAygLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblRhc2sidQoXR2V0UHJvbW90aW9uVGFza1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKCAQoYR2V0UHJvbW90aW9uVGFza1Jlc3BvbnNlEk0KDnByb21vdGlvbl90YXNrGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblRhc2tIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiIgogTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1JlcXVlc3QigAEKIUxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXNwb25zZRJbChdjbHVzdGVyX3Byb21vdGlvbl90YXNrcxgBIAMoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyUHJvbW90aW9uVGFzayJrCh5HZXRDbHVzdGVyUHJvbW90aW9uVGFza1JlcXVlc3QSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQipgEKH0dldENsdXN0ZXJQcm9tb3Rpb25UYXNrUmVzcG9uc2USagoOcHJvbW90aW9uX3Rhc2sYASABKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2x1c3RlclByb21vdGlvblRhc2tIAFIUY2x1c3RlclByb21vdGlvblRhc2sSDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IlIKEUNyZWF0ZVJvbGVSZXF1ZXN0Ej0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIlMKEkNyZWF0ZVJvbGVSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSIyChFEZWxldGVSb2xlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiFAoSRGVsZXRlUm9sZVJlc3BvbnNlIpgBCg5HZXRSb2xlUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYBSABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhQKDGFzX3Jlc291cmNlcxgDIAEoCBI7CgZmb3JtYXQYBCABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiugEKD0dldFJvbGVSZXNwb25zZRI/CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZUgAEk0KCXJlc291cmNlcxgCIAEoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGVSZXNvdXJjZXNIABINCgNyYXcYAyABKAxIAEIICgZyZXN1bHQiSgoGQ2xhaW1zEkAKBmNsYWltcxgBIAMoCzIwLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLkNsYWltItEBCgxHcmFudFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRyb2xlGAIgASgJEj8KC3VzZXJfY2xhaW1zGAMgASgLMiguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ2xhaW1zSAASVgoQcmVzb3VyY2VfZGV0YWlscxgEIAEoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJlc291cmNlRGV0YWlsc0gAQgkKB3JlcXVlc3QiTgoNR3JhbnRSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJPChBMaXN0Um9sZXNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgDIAEoCBIPCgdwcm9qZWN0GAEgASgJEhQKDGFzX3Jlc291cmNlcxgCIAEoCCKgAQoRTGlzdFJvbGVzUmVzcG9uc2USPgoFcm9sZXMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlEksKCXJlc291cmNlcxgCIAMoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGVSZXNvdXJjZXMi0gEKDVJldm9rZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRyb2xlGAIgASgJEj8KC3VzZXJfY2xhaW1zGAMgASgLMiguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ2xhaW1zSAASVgoQcmVzb3VyY2VfZGV0YWlscxgEIAEoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJlc291cmNlRGV0YWlsc0gAQgkKB3JlcXVlc3QiTwoOUmV2b2tlUmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUgoRVXBkYXRlUm9sZVJlcXVlc3QSPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUwoSVXBkYXRlUm9sZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIl8KFUNyZWF0ZUFQSVRva2VuUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIRCglyb2xlX25hbWUYAyABKAkSDAoEbmFtZRgEIAEoCSJKChZDcmVhdGVBUElUb2tlblJlc3BvbnNlEjAKDHRva2VuX3NlY3JldBgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiTAoVRGVsZXRlQVBJVG9rZW5SZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkiGAoWRGVsZXRlQVBJVG9rZW5SZXNwb25zZSKGAQoSR2V0QVBJVG9rZW5SZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImIKE0dldEFQSVRva2VuUmVzcG9uc2USMgoMdG9rZW5fc2VjcmV0GAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJQChRMaXN0QVBJVG9rZW5zUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIRCglyb2xlX25hbWUYAyABKAkiSgoVTGlzdEFQSVRva2Vuc1Jlc3BvbnNlEjEKDXRva2VuX3NlY3JldHMYASADKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0Ik4KFlJlZnJlc2hSZXNvdXJjZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhUKDXJlc291cmNlX3R5cGUYAyABKAkiQQoXUmVmcmVzaFJlc291cmNlUmVzcG9uc2USJgoIcmVzb3VyY2UYASABKAsyFC5nb29nbGUucHJvdG9idWYuQW55KlEKCVJhd0Zvcm1hdBIaChZSQVdfRk9STUFUX1VOU1BFQ0lGSUVEEAASEwoPUkFXX0ZPUk1BVF9KU09OEAESEwoPUkFXX0ZPUk1BVF9ZQU1MEAIy01gKDEthcmdvU2VydmljZRKDAQoOR2V0VmVyc2lvbkluZm8SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRWZXJzaW9uSW5mb1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlEnQKCUdldENvbmZpZxIyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ1JlcXVlc3QaMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdSZXNwb25zZRKGAQoPR2V0UHVibGljQ29uZmlnEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHVibGljQ29uZmlnUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFB1YmxpY0NvbmZpZ1Jlc3BvbnNlEncKCkFkbWluTG9naW4SMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BZG1pbkxvZ2luUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFkbWluTG9naW5SZXNwb25zZRKDAQoOQ3JlYXRlUmVzb3VyY2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXNvdXJjZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXNvdXJjZVJlc3BvbnNlEpsBChZDcmVhdGVPclVwZGF0ZVJlc291cmNlEj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlcXVlc3QaQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzcG9uc2USgwEKDlVwZGF0ZVJlc291cmNlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXNwb25zZRKDAQoORGVsZXRlUmVzb3VyY2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3BvbnNlEoYBCg9SZWZyZXNoUmVzb3VyY2USOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZWZyZXNoUmVzb3VyY2VSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmVmcmVzaFJlc291cmNlUmVzcG9uc2USdwoKTGlzdFN0YWdlcxIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RTdGFnZXNSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFN0YWdlc1Jlc3BvbnNlEo8BChJMaXN0U3RhZ2VTdW1tYXJpZXMSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VTdW1tYXJpZXNSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFN0YWdlU3VtbWFyaWVzUmVzcG9uc2USdwoKTGlzdEltYWdlcxIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RJbWFnZXNSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1Jlc3BvbnNlEnEKCEdldFN0YWdlEjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VSZXF1ZXN0GjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VSZXNwb25zZRJ8CgtXYXRjaFN0YWdlcxI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoU3RhZ2VzUmVxdWVzdBo1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoU3RhZ2VzUmVzcG9uc2UwARKUAQoTV2F0Y2hTdGFnZVN1bW1hcmllcxI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoU3RhZ2VTdW1tYXJpZXNSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZVN1bW1hcmllc1Jlc3BvbnNlMAESegoLRGVsZXRlU3RhZ2USNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVTdGFnZVJlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVTdGFnZVJlc3BvbnNlEokBChBHZXRDbHVzdGVyQ29uZmlnEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckNvbmZpZ1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQ29uZmlnUmVzcG9uc2USkgEKE0RlbGV0ZUNsdXN0ZXJDb25maWcSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQ29uZmlnUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJDb25maWdSZXNwb25zZRKRAQoSV2F0Y2hDbHVzdGVyQ29uZmlnEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hDbHVzdGVyQ29uZmlnUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlMAESgwEKDkxpc3RQcm9tb3Rpb25zEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvbnNSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvbnNSZXNwb25zZRKIAQoPV2F0Y2hQcm9tb3Rpb25zEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25zUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uc1Jlc3BvbnNlMAESfQoMR2V0UHJvbW90aW9uEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblJlc3BvbnNlEoUBCg5XYXRjaFByb21vdGlvbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uUmVzcG9uc2UwARKDAQoOQWJvcnRQcm9tb3Rpb24SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFByb21vdGlvblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFByb21vdGlvblJlc3BvbnNlEoABCg1EZWxldGVQcm9qZWN0EjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdFJlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0UmVzcG9uc2USdwoKR2V0UHJvamVjdBIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdFJlc3BvbnNlEn0KDExpc3RQcm9qZWN0cxI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0c1JlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvamVjdHNSZXNwb25zZRKJAQoQR2V0UHJvamVjdENvbmZpZxI5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RDb25maWdSZXF1ZXN0GjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdENvbmZpZ1Jlc3BvbnNlEpIBChNEZWxldGVQcm9qZWN0Q29uZmlnEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdENvbmZpZ1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0Q29uZmlnUmVzcG9uc2USkQEKEldhdGNoUHJvamVjdENvbmZpZxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvamVjdENvbmZpZ1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb2plY3RDb25maWdSZXNwb25zZTABEoMBCg5BcHByb3ZlRnJlaWdodBI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFwcHJvdmVGcmVpZ2h0UmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFwcHJvdmVGcmVpZ2h0UmVzcG9uc2USgAEKDURlbGV0ZUZyZWlnaHQSNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVGcmVpZ2h0UmVxdWVzdBo3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUZyZWlnaHRSZXNwb25zZRJ3CgpHZXRGcmVpZ2h0EjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0RnJlaWdodFJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRGcmVpZ2h0UmVzcG9uc2USfwoMV2F0Y2hGcmVpZ2h0EjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hGcmVpZ2h0UmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoRnJlaWdodFJlc3BvbnNlMAESgwEKDlByb21vdGVUb1N0YWdlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZVRvU3RhZ2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZVRvU3RhZ2VSZXNwb25zZRKMAQoRUHJvbW90ZURvd25zdHJlYW0SOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlRG93bnN0cmVhbVJlcXVlc3QaOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlRG93bnN0cmVhbVJlc3BvbnNlEn0KDFF1ZXJ5RnJlaWdodBI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5RdWVyeUZyZWlnaHRSZXNwb25zZRKPAQoSVXBkYXRlRnJlaWdodEFsaWFzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlRnJlaWdodEFsaWFzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUZyZWlnaHRBbGlhc1Jlc3BvbnNlEnEKCFJldmVyaWZ5EjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2ZXJpZnlSZXF1ZXN0GjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2ZXJpZnlSZXNwb25zZRKMAQoRQWJvcnRWZXJpZmljYXRpb24SOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFZlcmlmaWNhdGlvblJlcXVlc3QaOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFZlcmlmaWNhdGlvblJlc3BvbnNlEoMBCg5MaXN0V2FyZWhvdXNlcxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RXYXJlaG91c2VzUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RXYXJlaG91c2VzUmVzcG9uc2USfQoMR2V0V2FyZWhvdXNlEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0V2FyZWhvdXNlUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFdhcmVob3VzZVJlc3BvbnNlEogBCg9XYXRjaFdhcmVob3VzZXMSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFdhcmVob3VzZXNSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hXYXJlaG91c2VzUmVzcG9uc2UwARKGAQoPRGVsZXRlV2FyZWhvdXNlEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlV2FyZWhvdXNlUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVdhcmVob3VzZVJlc3BvbnNlEpgBChVDcmVhdGVSZXBvQ3JlZGVudGlhbHMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USmAEKFURlbGV0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKPAQoSR2V0UmVwb0NyZWRlbnRpYWxzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEpIBChNMaXN0UmVwb0NyZWRlbnRpYWxzEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USmAEKFVVwZGF0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKbAQoWTGlzdEdlbmVyaWNDcmVkZW50aWFscxI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEqEBChhDcmVhdGVHZW5lcmljQ3JlZGVudGlhbHMSQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USoQEKGFVwZGF0ZUdlbmVyaWNDcmVkZW50aWFscxJBLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRKhAQoYRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzEkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBpCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEoYBCg9DcmVhdGVDb25maWdNYXASOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVDb25maWdNYXBSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQ29uZmlnTWFwUmVzcG9uc2UShgEKD0RlbGV0ZUNvbmZpZ01hcBI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNvbmZpZ01hcFJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDb25maWdNYXBSZXNwb25zZRKDAQoOTGlzdENvbmZpZ01hcHMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q29uZmlnTWFwc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q29uZmlnTWFwc1Jlc3BvbnNlEn0KDEdldENvbmZpZ01hcBI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ01hcFJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdNYXBSZXNwb25zZRKGAQoPVXBkYXRlQ29uZmlnTWFwEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUNvbmZpZ01hcFJlc3BvbnNlEpgBChVMaXN0QW5hbHlzaXNUZW1wbGF0ZXMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USkgEKE0dldEFuYWx5c2lzVGVtcGxhdGUSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKbAQoWRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZRI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEq0BChxMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzEkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QaRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USpwEKGkdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlEkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKwAQodRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGUSRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaRy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEoMBCg5HZXRBbmFseXNpc1J1bhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVzcG9uc2USkQEKEkdldEFuYWx5c2lzUnVuTG9ncxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuTG9nc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1J1bkxvZ3NSZXNwb25zZTABEowBChFMaXN0UHJvamVjdEV2ZW50cxI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVzcG9uc2USjwEKEkxpc3RQcm9tb3Rpb25UYXNrcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25UYXNrc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uVGFza3NSZXNwb25zZRKkAQoZTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrcxJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXF1ZXN0GkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEokBChBHZXRQcm9tb3Rpb25UYXNrEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uVGFza1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25UYXNrUmVzcG9uc2USngEKF0dldENsdXN0ZXJQcm9tb3Rpb25UYXNrEkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXF1ZXN0GkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXNwb25zZRJ3CgpDcmVhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSb2xlUmVzcG9uc2USdwoKRGVsZXRlUm9sZRIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJvbGVSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUm9sZVJlc3BvbnNlEm4KB0dldFJvbGUSMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSb2xlUmVxdWVzdBoxLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJvbGVSZXNwb25zZRJoCgVHcmFudBIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVxdWVzdBovLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVzcG9uc2USdAoJTGlzdFJvbGVzEjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJvbGVzUmVxdWVzdBozLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSb2xlc1Jlc3BvbnNlEmsKBlJldm9rZRIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldm9rZVJlcXVlc3QaMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZva2VSZXNwb25zZRJ3CgpVcGRhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSb2xlUmVzcG9uc2USgwEKDkNyZWF0ZUFQSVRva2VuEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQVBJVG9rZW5SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQVBJVG9rZW5SZXNwb25zZRKDAQoORGVsZXRlQVBJVG9rZW4SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBUElUb2tlblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBUElUb2tlblJlc3BvbnNlEnoKC0dldEFQSVRva2VuEjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QVBJVG9rZW5SZXF1ZXN0GjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QVBJVG9rZW5SZXNwb25zZRKAAQoNTGlzdEFQSVRva2VucxI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RBUElUb2tlbnNSZXF1ZXN0GjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFQSVRva2Vuc1Jlc3BvbnNlQpMCCiRjb20uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTFCDFNlcnZpY2VQcm90b1ABWjhnaXRodWIuY29tL2FrdWl0eS9rYXJnby9hcGkvc2VydmljZS92MWFscGhhMTtzdmN2MWFscGhhMaICBEFJS1OqAiBBa3VpdHkuSW8uS2FyZ28uU2VydmljZS5WMWFscGhhMcoCIEFrdWl0eVxJb1xLYXJnb1xTZXJ2aWNlXFYxYWxwaGEx4gIsQWt1aXR5XElvXEthcmdvXFNlcnZpY2VcVjFhbHBoYTFcR1BCTWV0YWRhdGHqAiRBa3VpdHk6OklvOjpLYXJnbzo6U2VydmljZTo6VjFhbHBoYTFiBnByb3RvMw", [file_google_protobuf_timestamp, file_api_v1alpha1_generated, file_k8s_io_api_core_v1_generated, file_k8s_io_apimachinery_pkg_apis_meta_v1_generated, file_api_stubs_rollouts_v1alpha1_generated, file_api_rbac_v1alpha1_generated, file_google_protobuf_any]); + fileDesc("CiJhcGkvc2VydmljZS92MWFscGhhMS9zZXJ2aWNlLnByb3RvEiBha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMSKrAQoRQ29tcG9uZW50VmVyc2lvbnMSQgoGc2VydmVyGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm9IAIgBARI/CgNjbGkYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5WZXJzaW9uSW5mb0gBiAEBQgkKB19zZXJ2ZXJCBgoEX2NsaSKyAQoLVmVyc2lvbkluZm8SDwoHdmVyc2lvbhgBIAEoCRISCgpnaXRfY29tbWl0GAIgASgJEhYKDmdpdF90cmVlX2RpcnR5GAMgASgIEi4KCmJ1aWxkX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdvX3ZlcnNpb24YBSABKAkSEAoIY29tcGlsZXIYBiABKAkSEAoIcGxhdGZvcm0YByABKAkiFwoVR2V0VmVyc2lvbkluZm9SZXF1ZXN0Il0KFkdldFZlcnNpb25JbmZvUmVzcG9uc2USQwoMdmVyc2lvbl9pbmZvGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm8iEgoQR2V0Q29uZmlnUmVxdWVzdCItCgtBcmdvQ0RTaGFyZBILCgN1cmwYASABKAkSEQoJbmFtZXNwYWNlGAIgASgJIsgCChFHZXRDb25maWdSZXNwb25zZRJcCg1hcmdvY2Rfc2hhcmRzGAEgAygLMkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UuQXJnb2NkU2hhcmRzRW50cnkSIQoZc2VjcmV0X21hbmFnZW1lbnRfZW5hYmxlZBgCIAEoCBIiChpzeXN0ZW1fcmVzb3VyY2VzX25hbWVzcGFjZRgDIAEoCRIqCiJoYXNfYW5hbHlzaXNfcnVuX2xvZ3NfdXJsX3RlbXBsYXRlGAQgASgIGmIKEUFyZ29jZFNoYXJkc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFyZ29DRFNoYXJkOgI4ASIYChZHZXRQdWJsaWNDb25maWdSZXF1ZXN0Io4BChdHZXRQdWJsaWNDb25maWdSZXNwb25zZRJBCgtvaWRjX2NvbmZpZxgBIAEoCzIsLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLk9JRENDb25maWcSHQoVYWRtaW5fYWNjb3VudF9lbmFibGVkGAIgASgIEhEKCXNraXBfYXV0aBgDIAEoCCJaCgpPSURDQ29uZmlnEhIKCmlzc3Vlcl91cmwYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1jbGlfY2xpZW50X2lkGAQgASgJIiUKEUFkbWluTG9naW5SZXF1ZXN0EhAKCHBhc3N3b3JkGAEgASgJIiYKEkFkbWluTG9naW5SZXNwb25zZRIQCghpZF90b2tlbhgBIAEoCSIpChVDcmVhdGVSZXNvdXJjZVJlcXVlc3QSEAoIbWFuaWZlc3QYASABKAwiVgoUQ3JlYXRlUmVzb3VyY2VSZXN1bHQSIwoZY3JlYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgBIAEoDEgAEg8KBWVycm9yGAIgASgJSABCCAoGcmVzdWx0ImEKFkNyZWF0ZVJlc291cmNlUmVzcG9uc2USRwoHcmVzdWx0cxgBIAMoCzI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzdWx0IjEKHUNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIoMBChxDcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0EiMKGWNyZWF0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAIgASgMSAASDwoFZXJyb3IYAyABKAlIAEIICgZyZXN1bHQicQoeQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEk8KB3Jlc3VsdHMYASADKAsyPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0IikKFVVwZGF0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCJWChRVcGRhdGVSZXNvdXJjZVJlc3VsdBIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASDwoFZXJyb3IYAiABKAlIAEIICgZyZXN1bHQiYQoWVXBkYXRlUmVzb3VyY2VSZXNwb25zZRJHCgdyZXN1bHRzGAEgAygLMjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXN1bHQiKQoVRGVsZXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIlYKFERlbGV0ZVJlc291cmNlUmVzdWx0EiMKGWRlbGV0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIPCgVlcnJvchgCIAEoCUgAQggKBnJlc3VsdCJhChZEZWxldGVSZXNvdXJjZVJlc3BvbnNlEkcKB3Jlc3VsdHMYASADKAsyNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3VsdCIkChFMaXN0U3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIlEKEkxpc3RTdGFnZXNSZXNwb25zZRI7CgZzdGFnZXMYASADKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2UiJAoRTGlzdEltYWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSK/AQoSTGlzdEltYWdlc1Jlc3BvbnNlElAKBmltYWdlcxgCIAMoCzJALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RJbWFnZXNSZXNwb25zZS5JbWFnZXNFbnRyeRpXCgtJbWFnZXNFbnRyeRILCgNrZXkYASABKAkSNwoFdmFsdWUYAiABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5UYWdNYXA6AjgBIqgBCgZUYWdNYXASQAoEdGFncxgBIAMoCzIyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlRhZ01hcC5UYWdzRW50cnkaXAoJVGFnc0VudHJ5EgsKA2tleRgBIAEoCRI+CgV2YWx1ZRgCIAEoCzIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkltYWdlU3RhZ2VNYXA6AjgBIosBCg1JbWFnZVN0YWdlTWFwEksKBnN0YWdlcxgBIAMoCzI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkltYWdlU3RhZ2VNYXAuU3RhZ2VzRW50cnkaLQoLU3RhZ2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ASJtCg9HZXRTdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJpChBHZXRTdGFnZVJlc3BvbnNlEjwKBXN0YWdlGAEgASgLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0YWdlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IkQKHEdldFN0YWdlSGVhbHRoT3V0cHV0c1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRITCgtzdGFnZV9uYW1lcxgCIAMoCSLBAQodR2V0U3RhZ2VIZWFsdGhPdXRwdXRzUmVzcG9uc2USagoOaGVhbHRoX291dHB1dHMYASADKAsyUi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZUhlYWx0aE91dHB1dHNSZXNwb25zZS5IZWFsdGhPdXRwdXRzRW50cnkaNAoSSGVhbHRoT3V0cHV0c0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDDoCOAEiMwoSV2F0Y2hTdGFnZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJfChNXYXRjaFN0YWdlc1Jlc3BvbnNlEjoKBXN0YWdlGAEgASgLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0YWdlEgwKBHR5cGUYAiABKAkiMwoSRGVsZXRlU3RhZ2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIVChNEZWxldGVTdGFnZVJlc3BvbnNlIooCCgxTdGFnZVN1bW1hcnkSRwoIbWV0YWRhdGEYASABKAsyMC5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuT2JqZWN0TWV0YUgAiAEBEkUKBHNwZWMYAiABKAsyMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5TdGFnZVNwZWNTdW1tYXJ5SAGIAQESSQoGc3RhdHVzGAMgASgLMjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuU3RhZ2VTdGF0dXNTdW1tYXJ5SAKIAQFCCwoJX21ldGFkYXRhQgcKBV9zcGVjQgkKB19zdGF0dXMiqgEKEFN0YWdlU3BlY1N1bW1hcnkSDQoFc2hhcmQYASABKAkSTwoRcmVxdWVzdGVkX2ZyZWlnaHQYAiADKAsyNC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodFJlcXVlc3QSHAoUcHJvbW90aW9uX3N0ZXBfY291bnQYAyABKAUSGAoQaGFzX3ZlcmlmaWNhdGlvbhgEIAEoCCLHBAoSU3RhZ2VTdGF0dXNTdW1tYXJ5EkMKCmNvbmRpdGlvbnMYASADKAsyLy5rOHMuaW8uYXBpbWFjaGluZXJ5LnBrZy5hcGlzLm1ldGEudjEuQ29uZGl0aW9uEhwKFGxhc3RfaGFuZGxlZF9yZWZyZXNoGAIgASgJElUKD2N1cnJlbnRfZnJlaWdodBgDIAEoCzI3LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0Q29sbGVjdGlvbkgAiAEBElgKEWN1cnJlbnRfcHJvbW90aW9uGAQgASgLMjguZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblJlZmVyZW5jZUgBiAEBElUKDmxhc3RfcHJvbW90aW9uGAUgASgLMjguZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblJlZmVyZW5jZUgCiAEBEkEKBmhlYWx0aBgGIAEoCzIsLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5IZWFsdGhIA4gBARIbChNvYnNlcnZlZF9nZW5lcmF0aW9uGAcgASgDEh4KFmF1dG9fcHJvbW90aW9uX2VuYWJsZWQYCCABKAhCEgoQX2N1cnJlbnRfZnJlaWdodEIUChJfY3VycmVudF9wcm9tb3Rpb25CEQoPX2xhc3RfcHJvbW90aW9uQgkKB19oZWFsdGgiRQoZTGlzdFN0YWdlU3VtbWFyaWVzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEhcKD2ZyZWlnaHRfb3JpZ2lucxgCIAMoCSJ/ChpMaXN0U3RhZ2VTdW1tYXJpZXNSZXNwb25zZRJHCg9zdGFnZV9zdW1tYXJpZXMYASADKAsyLi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5TdGFnZVN1bW1hcnkSGAoQcmVzb3VyY2VfdmVyc2lvbhgCIAEoCSJuChpXYXRjaFN0YWdlU3VtbWFyaWVzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSFwoPZnJlaWdodF9vcmlnaW5zGAMgAygJEhgKEHJlc291cmNlX3ZlcnNpb24YBCABKAkiiQEKG1dhdGNoU3RhZ2VTdW1tYXJpZXNSZXNwb25zZRJKCg1zdGFnZV9zdW1tYXJ5GAEgASgLMi4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuU3RhZ2VTdW1tYXJ5SACIAQESDAoEdHlwZRgCIAEoCUIQCg5fc3RhZ2Vfc3VtbWFyeSJWChdHZXRDbHVzdGVyQ29uZmlnUmVxdWVzdBI7CgZmb3JtYXQYASABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiggEKGEdldENsdXN0ZXJDb25maWdSZXNwb25zZRJNCg5jbHVzdGVyX2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyQ29uZmlnSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IhwKGkRlbGV0ZUNsdXN0ZXJDb25maWdSZXF1ZXN0Ih0KG0RlbGV0ZUNsdXN0ZXJDb25maWdSZXNwb25zZSIbChlXYXRjaENsdXN0ZXJDb25maWdSZXF1ZXN0IncKGldhdGNoQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlEksKDmNsdXN0ZXJfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJDb25maWcSDAoEdHlwZRgCIAEoCSJGChVMaXN0UHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJdChZMaXN0UHJvbW90aW9uc1Jlc3BvbnNlEkMKCnByb21vdGlvbnMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uIkcKFldhdGNoUHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJrChdXYXRjaFByb21vdGlvbnNSZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uEgwKBHR5cGUYAiABKAkicQoTR2V0UHJvbW90aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0InUKFEdldFByb21vdGlvblJlc3BvbnNlEkQKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25IABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNgoVV2F0Y2hQcm9tb3Rpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJqChZXYXRjaFByb21vdGlvblJlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24SDAoEdHlwZRgCIAEoCSI2ChVBYm9ydFByb21vdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhgKFkFib3J0UHJvbW90aW9uUmVzcG9uc2UiJAoURGVsZXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCSIXChVEZWxldGVQcm9qZWN0UmVzcG9uc2UiXgoRR2V0UHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRI7CgZmb3JtYXQYAiABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQibwoSR2V0UHJvamVjdFJlc3BvbnNlEkAKB3Byb2plY3QYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCKgAQoTTGlzdFByb2plY3RzUmVxdWVzdBIWCglwYWdlX3NpemUYASABKAVIAIgBARIRCgRwYWdlGAIgASgFSAGIAQESEwoGZmlsdGVyGAMgASgJSAKIAQESCwoDdWlkGAQgAygJEhEKBG1pbmUYBSABKAhIA4gBAUIMCgpfcGFnZV9zaXplQgcKBV9wYWdlQgkKB19maWx0ZXJCBwoFX21pbmUiZgoUTGlzdFByb2plY3RzUmVzcG9uc2USPwoIcHJvamVjdHMYASADKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdBINCgV0b3RhbBgCIAEoBSJnChdHZXRQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEjsKBmZvcm1hdBgCIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKCAQoYR2V0UHJvamVjdENvbmZpZ1Jlc3BvbnNlEk0KDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWdIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiLQoaRGVsZXRlUHJvamVjdENvbmZpZ1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSIdChtEZWxldGVQcm9qZWN0Q29uZmlnUmVzcG9uc2UiLAoZV2F0Y2hQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIncKGldhdGNoUHJvamVjdENvbmZpZ1Jlc3BvbnNlEksKDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWcSDAoEdHlwZRgCIAEoCSJUChVBcHByb3ZlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJEg0KBXN0YWdlGAQgASgJIhgKFkFwcHJvdmVGcmVpZ2h0UmVzcG9uc2UiRAoURGVsZXRlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJIhcKFURlbGV0ZUZyZWlnaHRSZXNwb25zZSJ+ChFHZXRGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWxpYXMYAyABKAkSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0Im8KEkdldEZyZWlnaHRSZXNwb25zZRJACgdmcmVpZ2h0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiJgoTV2F0Y2hGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJImQKFFdhdGNoRnJlaWdodFJlc3BvbnNlEj4KB2ZyZWlnaHQYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodBIMCgR0eXBlGAIgASgJIl8KFVByb21vdGVUb1N0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJEg8KB2ZyZWlnaHQYAyABKAkSFQoNZnJlaWdodF9hbGlhcxgEIAEoCSJcChZQcm9tb3RlVG9TdGFnZVJlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24iYgoYUHJvbW90ZURvd25zdHJlYW1SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkSDwoHZnJlaWdodBgDIAEoCRIVCg1mcmVpZ2h0X2FsaWFzGAQgASgJImAKGVByb21vdGVEb3duc3RyZWFtUmVzcG9uc2USQwoKcHJvbW90aW9ucxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24iigEKE1F1ZXJ5RnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCRIQCghncm91cF9ieRgDIAEoCRINCgVncm91cBgEIAEoCRIQCghvcmRlcl9ieRgFIAEoCRIPCgdyZXZlcnNlGAYgASgIEg8KB29yaWdpbnMYByADKAkiyAEKFFF1ZXJ5RnJlaWdodFJlc3BvbnNlElIKBmdyb3VwcxgBIAMoCzJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlc3BvbnNlLkdyb3Vwc0VudHJ5GlwKC0dyb3Vwc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkZyZWlnaHRMaXN0OgI4ASJNCgtGcmVpZ2h0TGlzdBI+CgdmcmVpZ2h0GAEgAygLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHQiYAoZVXBkYXRlRnJlaWdodEFsaWFzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEQoJb2xkX2FsaWFzGAMgASgJEhEKCW5ld19hbGlhcxgEIAEoCSIcChpVcGRhdGVGcmVpZ2h0QWxpYXNSZXNwb25zZSIxCg9SZXZlcmlmeVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCSISChBSZXZlcmlmeVJlc3BvbnNlIjoKGEFib3J0VmVyaWZpY2F0aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJIhsKGUFib3J0VmVyaWZpY2F0aW9uUmVzcG9uc2UiKAoVTGlzdFdhcmVob3VzZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiXQoWTGlzdFdhcmVob3VzZXNSZXNwb25zZRJDCgp3YXJlaG91c2VzGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZSJxChNHZXRXYXJlaG91c2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQidQoUR2V0V2FyZWhvdXNlUmVzcG9uc2USRAoJd2FyZWhvdXNlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI3ChZXYXRjaFdhcmVob3VzZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJrChdXYXRjaFdhcmVob3VzZXNSZXNwb25zZRJCCgl3YXJlaG91c2UYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlEgwKBHR5cGUYAiABKAkiNwoWRGVsZXRlV2FyZWhvdXNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiGQoXRGVsZXRlV2FyZWhvdXNlUmVzcG9uc2Ui9AEKFkNyZWF0ZUNvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRJQCgRkYXRhGAUgAygLMkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQ29uZmlnTWFwUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAYgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkwKF0NyZWF0ZUNvbmZpZ01hcFJlc3BvbnNlEjEKCmNvbmZpZ19tYXAYASABKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwIk0KFkRlbGV0ZUNvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCSIZChdEZWxldGVDb25maWdNYXBSZXNwb25zZSI+ChVMaXN0Q29uZmlnTWFwc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAIgASgIEg8KB3Byb2plY3QYASABKAkiTAoWTGlzdENvbmZpZ01hcHNSZXNwb25zZRIyCgtjb25maWdfbWFwcxgBIAMoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXAihwEKE0dldENvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAQgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiZAoUR2V0Q29uZmlnTWFwUmVzcG9uc2USMwoKY29uZmlnX21hcBgBIAEoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXBIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQi9AEKFlVwZGF0ZUNvbmZpZ01hcFJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRJQCgRkYXRhGAUgAygLMkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAYgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkwKF1VwZGF0ZUNvbmZpZ01hcFJlc3BvbnNlEjEKCmNvbmZpZ19tYXAYASABKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwIsoBChxDcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIMCgR0eXBlGAMgASgJEhkKCHJlcG9fdXJsGAQgASgJUgdyZXBvVVJMEikKEXJlcG9fdXJsX2lzX3JlZ2V4GAUgASgIUg5yZXBvVVJMSXNSZWdleBIQCgh1c2VybmFtZRgGIAEoCRIQCghwYXNzd29yZBgHIAEoCSJQCh1DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiPQocRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiHwodRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2UidwoZR2V0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImgKGkdldFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEjEKC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCItChpMaXN0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIk4KG0xpc3RSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiygEKHFVwZGF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAggASgJEgwKBHR5cGUYAyABKAkSGQoIcmVwb191cmwYBCABKAlSB3JlcG9VUkwSKQoRcmVwb191cmxfaXNfcmVnZXgYBSABKAhSDnJlcG9VUkxJc1JlZ2V4EhAKCHVzZXJuYW1lGAYgASgJEhAKCHBhc3N3b3JkGAcgASgJIlAKHVVwZGF0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJGCh1MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAiABKAgSDwoHcHJvamVjdBgBIAEoCSJRCh5MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASADKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IoYCCh9DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgGIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSWQoEZGF0YRgEIAMoCzJLLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgFIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJTCiBDcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQihgIKH1VwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAYgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRJZCgRkYXRhGAQgAygLMksuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAUgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlMKIFVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJWCh9EZWxldGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgDIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiIgogRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2UiLwocTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIoIBCh1MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRJhChJhbmFseXNpc190ZW1wbGF0ZXMYASADKAsyRS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNUZW1wbGF0ZSJ4ChpHZXRBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IpoBChtHZXRBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USYgoRYW5hbHlzaXNfdGVtcGxhdGUYASABKAsyRS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNUZW1wbGF0ZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI+Ch1EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiIAoeRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlIiUKI0xpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0IrMBCiRMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USigEKGmNsdXN0ZXJfYW5hbHlzaXNfdGVtcGxhdGVzGAEgAygLMkwuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUhhjbHVzdGVyYW5hbHlzaXNUZW1wbGF0ZXMibgohR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0EgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IrABCiJHZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEnEKGWNsdXN0ZXJfYW5hbHlzaXNfdGVtcGxhdGUYASABKAsyTC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNAokRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0EgwKBG5hbWUYAiABKAkiJwolRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZSJ1ChVHZXRBbmFseXNpc1J1blJlcXVlc3QSEQoJbmFtZXNwYWNlGAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IosBChZHZXRBbmFseXNpc1J1blJlc3BvbnNlElgKDGFuYWx5c2lzX3J1bhgBIAEoCzJALmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5BbmFseXNpc1J1bkgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJpChlHZXRBbmFseXNpc1J1bkxvZ3NSZXF1ZXN0EhEKCW5hbWVzcGFjZRgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC21ldHJpY19uYW1lGAMgASgJEhYKDmNvbnRhaW5lcl9uYW1lGAQgASgJIisKGkdldEFuYWx5c2lzUnVuTG9nc1Jlc3BvbnNlEg0KBWNodW5rGAEgASgJIisKGExpc3RQcm9qZWN0RXZlbnRzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIkYKGUxpc3RQcm9qZWN0RXZlbnRzUmVzcG9uc2USKQoGZXZlbnRzGAEgAygLMhkuazhzLmlvLmFwaS5jb3JlLnYxLkV2ZW50IiwKGUxpc3RQcm9tb3Rpb25UYXNrc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJqChpMaXN0UHJvbW90aW9uVGFza3NSZXNwb25zZRJMCg9wcm9tb3Rpb25fdGFza3MYASADKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGFzayJ1ChdHZXRQcm9tb3Rpb25UYXNrUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IoIBChhHZXRQcm9tb3Rpb25UYXNrUmVzcG9uc2USTQoOcHJvbW90aW9uX3Rhc2sYASABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uVGFza0gAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCIiCiBMaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVxdWVzdCKAAQohTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlElsKF2NsdXN0ZXJfcHJvbW90aW9uX3Rhc2tzGAEgAygLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJQcm9tb3Rpb25UYXNrImsKHkdldENsdXN0ZXJQcm9tb3Rpb25UYXNrUmVxdWVzdBIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKmAQofR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXNwb25zZRJqCg5wcm9tb3Rpb25fdGFzaxgBIAEoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyUHJvbW90aW9uVGFza0gAUhRjbHVzdGVyUHJvbW90aW9uVGFzaxINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiUgoRQ3JlYXRlUm9sZVJlcXVlc3QSPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUwoSQ3JlYXRlUm9sZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIjIKEURlbGV0ZVJvbGVSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIUChJEZWxldGVSb2xlUmVzcG9uc2UimAEKDkdldFJvbGVSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgFIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSFAoMYXNfcmVzb3VyY2VzGAMgASgIEjsKBmZvcm1hdBgEIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCK6AQoPR2V0Um9sZVJlc3BvbnNlEj8KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlSAASTQoJcmVzb3VyY2VzGAIgASgLMjguZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZVJlc291cmNlc0gAEg0KA3JhdxgDIAEoDEgAQggKBnJlc3VsdCJKCgZDbGFpbXMSQAoGY2xhaW1zGAEgAygLMjAuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuQ2xhaW0i0QEKDEdyYW50UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBHJvbGUYAiABKAkSPwoLdXNlcl9jbGFpbXMYAyABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DbGFpbXNIABJWChByZXNvdXJjZV9kZXRhaWxzGAQgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUmVzb3VyY2VEZXRhaWxzSABCCQoHcmVxdWVzdCJOCg1HcmFudFJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIk8KEExpc3RSb2xlc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAMgASgIEg8KB3Byb2plY3QYASABKAkSFAoMYXNfcmVzb3VyY2VzGAIgASgIIqABChFMaXN0Um9sZXNSZXNwb25zZRI+CgVyb2xlcxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUSSwoJcmVzb3VyY2VzGAIgAygLMjguZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZVJlc291cmNlcyLSAQoNUmV2b2tlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBHJvbGUYAiABKAkSPwoLdXNlcl9jbGFpbXMYAyABKAsyKC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DbGFpbXNIABJWChByZXNvdXJjZV9kZXRhaWxzGAQgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUmVzb3VyY2VEZXRhaWxzSABCCQoHcmVxdWVzdCJPCg5SZXZva2VSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJSChFVcGRhdGVSb2xlUmVxdWVzdBI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJTChJVcGRhdGVSb2xlUmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiXwoVQ3JlYXRlQVBJVG9rZW5SZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEhEKCXJvbGVfbmFtZRgDIAEoCRIMCgRuYW1lGAQgASgJIkoKFkNyZWF0ZUFQSVRva2VuUmVzcG9uc2USMAoMdG9rZW5fc2VjcmV0GAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJMChVEZWxldGVBUElUb2tlblJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCSIYChZEZWxldGVBUElUb2tlblJlc3BvbnNlIoYBChJHZXRBUElUb2tlblJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSDAoEbmFtZRgDIAEoCRI7CgZmb3JtYXQYBCABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiYgoTR2V0QVBJVG9rZW5SZXNwb25zZRIyCgx0b2tlbl9zZWNyZXQYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IlAKFExpc3RBUElUb2tlbnNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEhEKCXJvbGVfbmFtZRgDIAEoCSJKChVMaXN0QVBJVG9rZW5zUmVzcG9uc2USMQoNdG9rZW5fc2VjcmV0cxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiTgoWUmVmcmVzaFJlc291cmNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSFQoNcmVzb3VyY2VfdHlwZRgDIAEoCSJBChdSZWZyZXNoUmVzb3VyY2VSZXNwb25zZRImCghyZXNvdXJjZRgBIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkqUQoJUmF3Rm9ybWF0EhoKFlJBV19GT1JNQVRfVU5TUEVDSUZJRUQQABITCg9SQVdfRk9STUFUX0pTT04QARITCg9SQVdfRk9STUFUX1lBTUwQAjLuWQoMS2FyZ29TZXJ2aWNlEoMBCg5HZXRWZXJzaW9uSW5mbxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFZlcnNpb25JbmZvUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFZlcnNpb25JbmZvUmVzcG9uc2USdAoJR2V0Q29uZmlnEjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVxdWVzdBozLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ1Jlc3BvbnNlEoYBCg9HZXRQdWJsaWNDb25maWcSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQdWJsaWNDb25maWdSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHVibGljQ29uZmlnUmVzcG9uc2USdwoKQWRtaW5Mb2dpbhIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFkbWluTG9naW5SZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWRtaW5Mb2dpblJlc3BvbnNlEoMBCg5DcmVhdGVSZXNvdXJjZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzcG9uc2USmwEKFkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2USPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVxdWVzdBpALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXNwb25zZRKDAQoOVXBkYXRlUmVzb3VyY2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXNvdXJjZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXNvdXJjZVJlc3BvbnNlEoMBCg5EZWxldGVSZXNvdXJjZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlc291cmNlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlc291cmNlUmVzcG9uc2UShgEKD1JlZnJlc2hSZXNvdXJjZRI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJlZnJlc2hSZXNvdXJjZVJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZWZyZXNoUmVzb3VyY2VSZXNwb25zZRJ3CgpMaXN0U3RhZ2VzEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFN0YWdlc1JlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VzUmVzcG9uc2USjwEKEkxpc3RTdGFnZVN1bW1hcmllcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RTdGFnZVN1bW1hcmllc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VTdW1tYXJpZXNSZXNwb25zZRJ3CgpMaXN0SW1hZ2VzEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1JlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0SW1hZ2VzUmVzcG9uc2UScQoIR2V0U3RhZ2USMS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlcXVlc3QaMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlc3BvbnNlEpgBChVHZXRTdGFnZUhlYWx0aE91dHB1dHMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZUhlYWx0aE91dHB1dHNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VIZWFsdGhPdXRwdXRzUmVzcG9uc2USfAoLV2F0Y2hTdGFnZXMSNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFN0YWdlc1JlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFN0YWdlc1Jlc3BvbnNlMAESlAEKE1dhdGNoU3RhZ2VTdW1tYXJpZXMSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFN0YWdlU3VtbWFyaWVzUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoU3RhZ2VTdW1tYXJpZXNSZXNwb25zZTABEnoKC0RlbGV0ZVN0YWdlEjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlU3RhZ2VSZXF1ZXN0GjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlU3RhZ2VSZXNwb25zZRKJAQoQR2V0Q2x1c3RlckNvbmZpZxI5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENsdXN0ZXJDb25maWdSZXF1ZXN0GjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckNvbmZpZ1Jlc3BvbnNlEpIBChNEZWxldGVDbHVzdGVyQ29uZmlnEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ2x1c3RlckNvbmZpZ1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQ29uZmlnUmVzcG9uc2USkQEKEldhdGNoQ2x1c3RlckNvbmZpZxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoQ2x1c3RlckNvbmZpZ1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaENsdXN0ZXJDb25maWdSZXNwb25zZTABEoMBCg5MaXN0UHJvbW90aW9ucxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25zUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25zUmVzcG9uc2USiAEKD1dhdGNoUHJvbW90aW9ucxI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uc1JlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb21vdGlvbnNSZXNwb25zZTABEn0KDEdldFByb21vdGlvbhI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25SZXNwb25zZRKFAQoOV2F0Y2hQcm9tb3Rpb24SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb21vdGlvblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb21vdGlvblJlc3BvbnNlMAESgwEKDkFib3J0UHJvbW90aW9uEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWJvcnRQcm9tb3Rpb25SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWJvcnRQcm9tb3Rpb25SZXNwb25zZRKAAQoNRGVsZXRlUHJvamVjdBI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RSZXF1ZXN0GjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdFJlc3BvbnNlEncKCkdldFByb2plY3QSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9qZWN0UmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RSZXNwb25zZRJ9CgxMaXN0UHJvamVjdHMSNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvamVjdHNSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RzUmVzcG9uc2USiQEKEEdldFByb2plY3RDb25maWcSOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9qZWN0Q29uZmlnUmVxdWVzdBo6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RDb25maWdSZXNwb25zZRKSAQoTRGVsZXRlUHJvamVjdENvbmZpZxI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RDb25maWdSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdENvbmZpZ1Jlc3BvbnNlEpEBChJXYXRjaFByb2plY3RDb25maWcSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb2plY3RDb25maWdSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9qZWN0Q29uZmlnUmVzcG9uc2UwARKDAQoOQXBwcm92ZUZyZWlnaHQSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BcHByb3ZlRnJlaWdodFJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BcHByb3ZlRnJlaWdodFJlc3BvbnNlEoABCg1EZWxldGVGcmVpZ2h0EjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlRnJlaWdodFJlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVGcmVpZ2h0UmVzcG9uc2USdwoKR2V0RnJlaWdodBIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEZyZWlnaHRSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0RnJlaWdodFJlc3BvbnNlEn8KDFdhdGNoRnJlaWdodBI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoRnJlaWdodFJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaEZyZWlnaHRSZXNwb25zZTABEoMBCg5Qcm9tb3RlVG9TdGFnZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVUb1N0YWdlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVUb1N0YWdlUmVzcG9uc2USjAEKEVByb21vdGVEb3duc3RyZWFtEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZURvd25zdHJlYW1SZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZURvd25zdHJlYW1SZXNwb25zZRJ9CgxRdWVyeUZyZWlnaHQSNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5RdWVyeUZyZWlnaHRSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUXVlcnlGcmVpZ2h0UmVzcG9uc2USjwEKElVwZGF0ZUZyZWlnaHRBbGlhcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUZyZWlnaHRBbGlhc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVGcmVpZ2h0QWxpYXNSZXNwb25zZRJxCghSZXZlcmlmeRIxLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldmVyaWZ5UmVxdWVzdBoyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldmVyaWZ5UmVzcG9uc2USjAEKEUFib3J0VmVyaWZpY2F0aW9uEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWJvcnRWZXJpZmljYXRpb25SZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWJvcnRWZXJpZmljYXRpb25SZXNwb25zZRKDAQoOTGlzdFdhcmVob3VzZXMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0V2FyZWhvdXNlc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0V2FyZWhvdXNlc1Jlc3BvbnNlEn0KDEdldFdhcmVob3VzZRI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFdhcmVob3VzZVJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRXYXJlaG91c2VSZXNwb25zZRKIAQoPV2F0Y2hXYXJlaG91c2VzEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hXYXJlaG91c2VzUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoV2FyZWhvdXNlc1Jlc3BvbnNlMAEShgEKD0RlbGV0ZVdhcmVob3VzZRI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVdhcmVob3VzZVJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVXYXJlaG91c2VSZXNwb25zZRKYAQoVQ3JlYXRlUmVwb0NyZWRlbnRpYWxzEj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEpgBChVEZWxldGVSZXBvQ3JlZGVudGlhbHMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USjwEKEkdldFJlcG9DcmVkZW50aWFscxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKSAQoTTGlzdFJlcG9DcmVkZW50aWFscxI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEpgBChVVcGRhdGVSZXBvQ3JlZGVudGlhbHMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USmwEKFkxpc3RHZW5lcmljQ3JlZGVudGlhbHMSPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBpALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRKhAQoYQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzEkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBpCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEqEBChhVcGRhdGVHZW5lcmljQ3JlZGVudGlhbHMSQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USoQEKGERlbGV0ZUdlbmVyaWNDcmVkZW50aWFscxJBLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRKGAQoPQ3JlYXRlQ29uZmlnTWFwEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQ29uZmlnTWFwUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUNvbmZpZ01hcFJlc3BvbnNlEoYBCg9EZWxldGVDb25maWdNYXASOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDb25maWdNYXBSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ29uZmlnTWFwUmVzcG9uc2USgwEKDkxpc3RDb25maWdNYXBzEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENvbmZpZ01hcHNSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENvbmZpZ01hcHNSZXNwb25zZRJ9CgxHZXRDb25maWdNYXASNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdNYXBSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnTWFwUmVzcG9uc2UShgEKD1VwZGF0ZUNvbmZpZ01hcBI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUNvbmZpZ01hcFJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVDb25maWdNYXBSZXNwb25zZRKYAQoVTGlzdEFuYWx5c2lzVGVtcGxhdGVzEj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdBo/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RBbmFseXNpc1RlbXBsYXRlc1Jlc3BvbnNlEpIBChNHZXRBbmFseXNpc1RlbXBsYXRlEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USmwEKFkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGUSPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBpALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKtAQocTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlcxJFLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0GkYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1Jlc3BvbnNlEqcBChpHZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZRJDLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBpELmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USsAEKHURlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlEkYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKDAQoOR2V0QW5hbHlzaXNSdW4SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1J1blJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1J1blJlc3BvbnNlEpEBChJHZXRBbmFseXNpc1J1bkxvZ3MSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1J1bkxvZ3NSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5Mb2dzUmVzcG9uc2UwARKMAQoRTGlzdFByb2plY3RFdmVudHMSOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvamVjdEV2ZW50c1JlcXVlc3QaOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvamVjdEV2ZW50c1Jlc3BvbnNlEo8BChJMaXN0UHJvbW90aW9uVGFza3MSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uVGFza3NSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvblRhc2tzUmVzcG9uc2USpAEKGUxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3MSQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVxdWVzdBpDLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXNwb25zZRKJAQoQR2V0UHJvbW90aW9uVGFzaxI5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblRhc2tSZXF1ZXN0GjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uVGFza1Jlc3BvbnNlEp4BChdHZXRDbHVzdGVyUHJvbW90aW9uVGFzaxJALmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENsdXN0ZXJQcm9tb3Rpb25UYXNrUmVxdWVzdBpBLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENsdXN0ZXJQcm9tb3Rpb25UYXNrUmVzcG9uc2USdwoKQ3JlYXRlUm9sZRIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJvbGVSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUm9sZVJlc3BvbnNlEncKCkRlbGV0ZVJvbGUSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSb2xlUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJvbGVSZXNwb25zZRJuCgdHZXRSb2xlEjAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Um9sZVJlcXVlc3QaMS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSb2xlUmVzcG9uc2USaAoFR3JhbnQSLi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HcmFudFJlcXVlc3QaLy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HcmFudFJlc3BvbnNlEnQKCUxpc3RSb2xlcxIyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSb2xlc1JlcXVlc3QaMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Um9sZXNSZXNwb25zZRJrCgZSZXZva2USLy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZva2VSZXF1ZXN0GjAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2b2tlUmVzcG9uc2USdwoKVXBkYXRlUm9sZRIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJvbGVSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUm9sZVJlc3BvbnNlEoMBCg5DcmVhdGVBUElUb2tlbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUFQSVRva2VuUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUFQSVRva2VuUmVzcG9uc2USgwEKDkRlbGV0ZUFQSVRva2VuEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQVBJVG9rZW5SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQVBJVG9rZW5SZXNwb25zZRJ6CgtHZXRBUElUb2tlbhI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFQSVRva2VuUmVxdWVzdBo1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFQSVRva2VuUmVzcG9uc2USgAEKDUxpc3RBUElUb2tlbnMSNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QVBJVG9rZW5zUmVxdWVzdBo3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RBUElUb2tlbnNSZXNwb25zZUKTAgokY29tLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExQgxTZXJ2aWNlUHJvdG9QAVo4Z2l0aHViLmNvbS9ha3VpdHkva2FyZ28vYXBpL3NlcnZpY2UvdjFhbHBoYTE7c3ZjdjFhbHBoYTGiAgRBSUtTqgIgQWt1aXR5LklvLkthcmdvLlNlcnZpY2UuVjFhbHBoYTHKAiBBa3VpdHlcSW9cS2FyZ29cU2VydmljZVxWMWFscGhhMeICLEFrdWl0eVxJb1xLYXJnb1xTZXJ2aWNlXFYxYWxwaGExXEdQQk1ldGFkYXRh6gIkQWt1aXR5OjpJbzo6S2FyZ286OlNlcnZpY2U6OlYxYWxwaGExYgZwcm90bzM", [file_google_protobuf_timestamp, file_api_v1alpha1_generated, file_k8s_io_api_core_v1_generated, file_k8s_io_apimachinery_pkg_apis_meta_v1_generated, file_api_stubs_rollouts_v1alpha1_generated, file_api_rbac_v1alpha1_generated, file_google_protobuf_any]); /** * ComponentVersions contains version information for different Kargo components. @@ -882,6 +882,59 @@ export type GetStageResponse = Message<"akuity.io.kargo.service.v1alpha1.GetStag export const GetStageResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_api_service_v1alpha1_service, 31); +/** + * GetStageHealthOutputsRequest is the request for fetching the raw health + * output blob of one or more Stages within a project. + * + * @generated from message akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsRequest + */ +export type GetStageHealthOutputsRequest = Message<"akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsRequest"> & { + /** + * project is the name of the project containing the Stages. + * + * @generated from field: string project = 1; + */ + project: string; + + /** + * stage_names is the list of Stage names whose health outputs to return. + * Order is irrelevant; duplicates are deduplicated by the server. + * + * @generated from field: repeated string stage_names = 2; + */ + stageNames: string[]; +}; + +/** + * Describes the message akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsRequest. + * Use `create(GetStageHealthOutputsRequestSchema)` to create a new message. + */ +export const GetStageHealthOutputsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_api_service_v1alpha1_service, 32); + +/** + * GetStageHealthOutputsResponse contains per-Stage raw health output blobs. + * + * @generated from message akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse + */ +export type GetStageHealthOutputsResponse = Message<"akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse"> & { + /** + * health_outputs maps Stage name to the raw bytes of its + * Stage.status.health.output.raw field. Stages that do not exist in the + * project or have no health output recorded are omitted from the map. + * + * @generated from field: map health_outputs = 1; + */ + healthOutputs: { [key: string]: Uint8Array }; +}; + +/** + * Describes the message akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse. + * Use `create(GetStageHealthOutputsResponseSchema)` to create a new message. + */ +export const GetStageHealthOutputsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_api_service_v1alpha1_service, 33); + /** * WatchStagesRequest is the request for watching stage changes via streaming. * @@ -908,7 +961,7 @@ export type WatchStagesRequest = Message<"akuity.io.kargo.service.v1alpha1.Watch * Use `create(WatchStagesRequestSchema)` to create a new message. */ export const WatchStagesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 32); + messageDesc(file_api_service_v1alpha1_service, 34); /** * WatchStagesResponse contains stage change notifications. @@ -936,7 +989,7 @@ export type WatchStagesResponse = Message<"akuity.io.kargo.service.v1alpha1.Watc * Use `create(WatchStagesResponseSchema)` to create a new message. */ export const WatchStagesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 33); + messageDesc(file_api_service_v1alpha1_service, 35); /** * DeleteStageRequest is the request for deleting a stage. @@ -964,7 +1017,7 @@ export type DeleteStageRequest = Message<"akuity.io.kargo.service.v1alpha1.Delet * Use `create(DeleteStageRequestSchema)` to create a new message. */ export const DeleteStageRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 34); + messageDesc(file_api_service_v1alpha1_service, 36); /** * DeleteStageResponse is the response after deleting a stage. @@ -981,7 +1034,7 @@ export type DeleteStageResponse = Message<"akuity.io.kargo.service.v1alpha1.Dele * Use `create(DeleteStageResponseSchema)` to create a new message. */ export const DeleteStageResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 35); + messageDesc(file_api_service_v1alpha1_service, 37); /** * StageSummary is a lightweight projection of a Stage resource intended for @@ -1020,7 +1073,7 @@ export type StageSummary = Message<"akuity.io.kargo.service.v1alpha1.StageSummar * Use `create(StageSummarySchema)` to create a new message. */ export const StageSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 36); + messageDesc(file_api_service_v1alpha1_service, 38); /** * StageSpecSummary is the subset of StageSpec fields returned by @@ -1068,7 +1121,7 @@ export type StageSpecSummary = Message<"akuity.io.kargo.service.v1alpha1.StageSp * Use `create(StageSpecSummarySchema)` to create a new message. */ export const StageSpecSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 37); + messageDesc(file_api_service_v1alpha1_service, 39); /** * StageStatusSummary is the subset of StageStatus fields returned by @@ -1141,7 +1194,7 @@ export type StageStatusSummary = Message<"akuity.io.kargo.service.v1alpha1.Stage * Use `create(StageStatusSummarySchema)` to create a new message. */ export const StageStatusSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 38); + messageDesc(file_api_service_v1alpha1_service, 40); /** * ListStageSummariesRequest is the request for listing stage summaries @@ -1173,7 +1226,7 @@ export type ListStageSummariesRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(ListStageSummariesRequestSchema)` to create a new message. */ export const ListStageSummariesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 39); + messageDesc(file_api_service_v1alpha1_service, 41); /** * ListStageSummariesResponse contains a list of stage summaries within a project. @@ -1204,7 +1257,7 @@ export type ListStageSummariesResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(ListStageSummariesResponseSchema)` to create a new message. */ export const ListStageSummariesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 40); + messageDesc(file_api_service_v1alpha1_service, 42); /** * WatchStageSummariesRequest is the request for watching stage summaries via streaming. @@ -1251,7 +1304,7 @@ export type WatchStageSummariesRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(WatchStageSummariesRequestSchema)` to create a new message. */ export const WatchStageSummariesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 41); + messageDesc(file_api_service_v1alpha1_service, 43); /** * WatchStageSummariesResponse contains stage summary change notifications. @@ -1279,7 +1332,7 @@ export type WatchStageSummariesResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(WatchStageSummariesResponseSchema)` to create a new message. */ export const WatchStageSummariesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 42); + messageDesc(file_api_service_v1alpha1_service, 44); /** * @generated from message akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest @@ -1296,7 +1349,7 @@ export type GetClusterConfigRequest = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(GetClusterConfigRequestSchema)` to create a new message. */ export const GetClusterConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 43); + messageDesc(file_api_service_v1alpha1_service, 45); /** * @generated from message akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse @@ -1325,7 +1378,7 @@ export type GetClusterConfigResponse = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(GetClusterConfigResponseSchema)` to create a new message. */ export const GetClusterConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 44); + messageDesc(file_api_service_v1alpha1_service, 46); /** * explicitly empty @@ -1340,7 +1393,7 @@ export type DeleteClusterConfigRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(DeleteClusterConfigRequestSchema)` to create a new message. */ export const DeleteClusterConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 45); + messageDesc(file_api_service_v1alpha1_service, 47); /** * explicitly empty @@ -1355,7 +1408,7 @@ export type DeleteClusterConfigResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(DeleteClusterConfigResponseSchema)` to create a new message. */ export const DeleteClusterConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 46); + messageDesc(file_api_service_v1alpha1_service, 48); /** * explicitly empty @@ -1370,7 +1423,7 @@ export type WatchClusterConfigRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(WatchClusterConfigRequestSchema)` to create a new message. */ export const WatchClusterConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 47); + messageDesc(file_api_service_v1alpha1_service, 49); /** * @generated from message akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse @@ -1394,7 +1447,7 @@ export type WatchClusterConfigResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(WatchClusterConfigResponseSchema)` to create a new message. */ export const WatchClusterConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 48); + messageDesc(file_api_service_v1alpha1_service, 50); /** * ListPromotionsRequest is the request for retrieving all promotions, optionally filtered by stage. @@ -1422,7 +1475,7 @@ export type ListPromotionsRequest = Message<"akuity.io.kargo.service.v1alpha1.Li * Use `create(ListPromotionsRequestSchema)` to create a new message. */ export const ListPromotionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 49); + messageDesc(file_api_service_v1alpha1_service, 51); /** * ListPromotionsResponse contains a list of promotions within a project. @@ -1443,7 +1496,7 @@ export type ListPromotionsResponse = Message<"akuity.io.kargo.service.v1alpha1.L * Use `create(ListPromotionsResponseSchema)` to create a new message. */ export const ListPromotionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 50); + messageDesc(file_api_service_v1alpha1_service, 52); /** * WatchPromotionsRequest is the request for watching promotion changes via streaming. @@ -1471,7 +1524,7 @@ export type WatchPromotionsRequest = Message<"akuity.io.kargo.service.v1alpha1.W * Use `create(WatchPromotionsRequestSchema)` to create a new message. */ export const WatchPromotionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 51); + messageDesc(file_api_service_v1alpha1_service, 53); /** * WatchPromotionsResponse contains promotion change notifications. @@ -1499,7 +1552,7 @@ export type WatchPromotionsResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(WatchPromotionsResponseSchema)` to create a new message. */ export const WatchPromotionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 52); + messageDesc(file_api_service_v1alpha1_service, 54); /** * GetPromotionRequest is the request for retrieving details of a specific promotion. @@ -1534,7 +1587,7 @@ export type GetPromotionRequest = Message<"akuity.io.kargo.service.v1alpha1.GetP * Use `create(GetPromotionRequestSchema)` to create a new message. */ export const GetPromotionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 53); + messageDesc(file_api_service_v1alpha1_service, 55); /** * GetPromotionResponse contains the requested promotion information. @@ -1569,7 +1622,7 @@ export type GetPromotionResponse = Message<"akuity.io.kargo.service.v1alpha1.Get * Use `create(GetPromotionResponseSchema)` to create a new message. */ export const GetPromotionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 54); + messageDesc(file_api_service_v1alpha1_service, 56); /** * WatchPromotionRequest is the request for watching a specific promotion via streaming. @@ -1597,7 +1650,7 @@ export type WatchPromotionRequest = Message<"akuity.io.kargo.service.v1alpha1.Wa * Use `create(WatchPromotionRequestSchema)` to create a new message. */ export const WatchPromotionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 55); + messageDesc(file_api_service_v1alpha1_service, 57); /** * WatchPromotionResponse contains specific promotion change notifications. @@ -1625,7 +1678,7 @@ export type WatchPromotionResponse = Message<"akuity.io.kargo.service.v1alpha1.W * Use `create(WatchPromotionResponseSchema)` to create a new message. */ export const WatchPromotionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 56); + messageDesc(file_api_service_v1alpha1_service, 58); /** * AbortPromotionRequest is the request for canceling a running promotion process. @@ -1653,7 +1706,7 @@ export type AbortPromotionRequest = Message<"akuity.io.kargo.service.v1alpha1.Ab * Use `create(AbortPromotionRequestSchema)` to create a new message. */ export const AbortPromotionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 57); + messageDesc(file_api_service_v1alpha1_service, 59); /** * AbortPromotionResponse is the response after aborting a promotion. @@ -1670,7 +1723,7 @@ export type AbortPromotionResponse = Message<"akuity.io.kargo.service.v1alpha1.A * Use `create(AbortPromotionResponseSchema)` to create a new message. */ export const AbortPromotionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 58); + messageDesc(file_api_service_v1alpha1_service, 60); /** * DeleteProjectRequest is the request for deleting a project and all associated resources. @@ -1691,7 +1744,7 @@ export type DeleteProjectRequest = Message<"akuity.io.kargo.service.v1alpha1.Del * Use `create(DeleteProjectRequestSchema)` to create a new message. */ export const DeleteProjectRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 59); + messageDesc(file_api_service_v1alpha1_service, 61); /** * DeleteProjectResponse is the response after deleting a project. @@ -1708,7 +1761,7 @@ export type DeleteProjectResponse = Message<"akuity.io.kargo.service.v1alpha1.De * Use `create(DeleteProjectResponseSchema)` to create a new message. */ export const DeleteProjectResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 60); + messageDesc(file_api_service_v1alpha1_service, 62); /** * GetProjectRequest is the request for retrieving details of a specific project. @@ -1736,7 +1789,7 @@ export type GetProjectRequest = Message<"akuity.io.kargo.service.v1alpha1.GetPro * Use `create(GetProjectRequestSchema)` to create a new message. */ export const GetProjectRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 61); + messageDesc(file_api_service_v1alpha1_service, 63); /** * GetProjectResponse contains the requested project information. @@ -1771,7 +1824,7 @@ export type GetProjectResponse = Message<"akuity.io.kargo.service.v1alpha1.GetPr * Use `create(GetProjectResponseSchema)` to create a new message. */ export const GetProjectResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 62); + messageDesc(file_api_service_v1alpha1_service, 64); /** * ListProjectsRequest is the request for listing all projects with optional filtering and pagination. @@ -1821,7 +1874,7 @@ export type ListProjectsRequest = Message<"akuity.io.kargo.service.v1alpha1.List * Use `create(ListProjectsRequestSchema)` to create a new message. */ export const ListProjectsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 63); + messageDesc(file_api_service_v1alpha1_service, 65); /** * ListProjectsResponse contains the list of projects and pagination information. @@ -1849,7 +1902,7 @@ export type ListProjectsResponse = Message<"akuity.io.kargo.service.v1alpha1.Lis * Use `create(ListProjectsResponseSchema)` to create a new message. */ export const ListProjectsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 64); + messageDesc(file_api_service_v1alpha1_service, 66); /** * GetProjectConfigRequest is the request for retrieving project-level configuration settings. @@ -1877,7 +1930,7 @@ export type GetProjectConfigRequest = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(GetProjectConfigRequestSchema)` to create a new message. */ export const GetProjectConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 65); + messageDesc(file_api_service_v1alpha1_service, 67); /** * GetProjectConfigResponse contains the requested project configuration. @@ -1912,7 +1965,7 @@ export type GetProjectConfigResponse = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(GetProjectConfigResponseSchema)` to create a new message. */ export const GetProjectConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 66); + messageDesc(file_api_service_v1alpha1_service, 68); /** * DeleteProjectConfigRequest is the request for removing project-level configuration. @@ -1933,7 +1986,7 @@ export type DeleteProjectConfigRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(DeleteProjectConfigRequestSchema)` to create a new message. */ export const DeleteProjectConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 67); + messageDesc(file_api_service_v1alpha1_service, 69); /** * DeleteProjectConfigResponse is the response after deleting project configuration. @@ -1950,7 +2003,7 @@ export type DeleteProjectConfigResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(DeleteProjectConfigResponseSchema)` to create a new message. */ export const DeleteProjectConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 68); + messageDesc(file_api_service_v1alpha1_service, 70); /** * WatchProjectConfigRequest is the request for streaming project configuration changes. @@ -1971,7 +2024,7 @@ export type WatchProjectConfigRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(WatchProjectConfigRequestSchema)` to create a new message. */ export const WatchProjectConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 69); + messageDesc(file_api_service_v1alpha1_service, 71); /** * WatchProjectConfigResponse provides streaming updates for project configuration changes. @@ -1999,7 +2052,7 @@ export type WatchProjectConfigResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(WatchProjectConfigResponseSchema)` to create a new message. */ export const WatchProjectConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 70); + messageDesc(file_api_service_v1alpha1_service, 72); /** * ApproveFreightRequest is the request for approving freight for promotion to a stage. @@ -2041,7 +2094,7 @@ export type ApproveFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Ap * Use `create(ApproveFreightRequestSchema)` to create a new message. */ export const ApproveFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 71); + messageDesc(file_api_service_v1alpha1_service, 73); /** * ApproveFreightResponse is the response after approving freight. @@ -2058,7 +2111,7 @@ export type ApproveFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.A * Use `create(ApproveFreightResponseSchema)` to create a new message. */ export const ApproveFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 72); + messageDesc(file_api_service_v1alpha1_service, 74); /** * DeleteFreightRequest is the request for deleting freight. @@ -2093,7 +2146,7 @@ export type DeleteFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Del * Use `create(DeleteFreightRequestSchema)` to create a new message. */ export const DeleteFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 73); + messageDesc(file_api_service_v1alpha1_service, 75); /** * DeleteFreightResponse is the response after deleting freight. @@ -2110,7 +2163,7 @@ export type DeleteFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.De * Use `create(DeleteFreightResponseSchema)` to create a new message. */ export const DeleteFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 74); + messageDesc(file_api_service_v1alpha1_service, 76); /** * GetFreightRequest is the request for retrieving details of specific freight. @@ -2152,7 +2205,7 @@ export type GetFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.GetFre * Use `create(GetFreightRequestSchema)` to create a new message. */ export const GetFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 75); + messageDesc(file_api_service_v1alpha1_service, 77); /** * GetFreightResponse contains the requested freight information. @@ -2187,7 +2240,7 @@ export type GetFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.GetFr * Use `create(GetFreightResponseSchema)` to create a new message. */ export const GetFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 76); + messageDesc(file_api_service_v1alpha1_service, 78); /** * WatchFreightRequest is the request for watching freight changes via streaming. @@ -2208,7 +2261,7 @@ export type WatchFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Watc * Use `create(WatchFreightRequestSchema)` to create a new message. */ export const WatchFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 77); + messageDesc(file_api_service_v1alpha1_service, 79); /** * WatchFreightResponse contains freight change notifications. @@ -2238,7 +2291,7 @@ export type WatchFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.Wat * Use `create(WatchFreightResponseSchema)` to create a new message. */ export const WatchFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 78); + messageDesc(file_api_service_v1alpha1_service, 80); /** * PromoteToStageRequest is the request for promoting freight to a specific stage. @@ -2280,7 +2333,7 @@ export type PromoteToStageRequest = Message<"akuity.io.kargo.service.v1alpha1.Pr * Use `create(PromoteToStageRequestSchema)` to create a new message. */ export const PromoteToStageRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 79); + messageDesc(file_api_service_v1alpha1_service, 81); /** * PromoteToStageResponse contains the promotion created for the freight promotion. @@ -2301,7 +2354,7 @@ export type PromoteToStageResponse = Message<"akuity.io.kargo.service.v1alpha1.P * Use `create(PromoteToStageResponseSchema)` to create a new message. */ export const PromoteToStageResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 80); + messageDesc(file_api_service_v1alpha1_service, 82); /** * PromoteDownstreamRequest is the request for automatically promoting freight to downstream stages. @@ -2343,7 +2396,7 @@ export type PromoteDownstreamRequest = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(PromoteDownstreamRequestSchema)` to create a new message. */ export const PromoteDownstreamRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 81); + messageDesc(file_api_service_v1alpha1_service, 83); /** * PromoteDownstreamResponse contains the promotions created for downstream freight promotions. @@ -2364,7 +2417,7 @@ export type PromoteDownstreamResponse = Message<"akuity.io.kargo.service.v1alpha * Use `create(PromoteDownstreamResponseSchema)` to create a new message. */ export const PromoteDownstreamResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 82); + messageDesc(file_api_service_v1alpha1_service, 84); /** * QueryFreightRequest is the request for searching freight based on specified criteria. @@ -2427,7 +2480,7 @@ export type QueryFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Quer * Use `create(QueryFreightRequestSchema)` to create a new message. */ export const QueryFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 83); + messageDesc(file_api_service_v1alpha1_service, 85); /** * QueryFreightResponse contains the grouped freight search results. @@ -2448,7 +2501,7 @@ export type QueryFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.Que * Use `create(QueryFreightResponseSchema)` to create a new message. */ export const QueryFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 84); + messageDesc(file_api_service_v1alpha1_service, 86); /** * FreightList contains a list of freight resources. @@ -2469,7 +2522,7 @@ export type FreightList = Message<"akuity.io.kargo.service.v1alpha1.FreightList" * Use `create(FreightListSchema)` to create a new message. */ export const FreightListSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 85); + messageDesc(file_api_service_v1alpha1_service, 87); /** * UpdateFreightAliasRequest is the request for updating a freight's alias. @@ -2511,7 +2564,7 @@ export type UpdateFreightAliasRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(UpdateFreightAliasRequestSchema)` to create a new message. */ export const UpdateFreightAliasRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 86); + messageDesc(file_api_service_v1alpha1_service, 88); /** * UpdateFreightAliasResponse is the response after updating a freight's alias. @@ -2528,7 +2581,7 @@ export type UpdateFreightAliasResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(UpdateFreightAliasResponseSchema)` to create a new message. */ export const UpdateFreightAliasResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 87); + messageDesc(file_api_service_v1alpha1_service, 89); /** * ReverifyRequest is the request for triggering re-execution of verification processes for a stage. @@ -2556,7 +2609,7 @@ export type ReverifyRequest = Message<"akuity.io.kargo.service.v1alpha1.Reverify * Use `create(ReverifyRequestSchema)` to create a new message. */ export const ReverifyRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 88); + messageDesc(file_api_service_v1alpha1_service, 90); /** * ReverifyResponse is the response after triggering reverification. @@ -2573,7 +2626,7 @@ export type ReverifyResponse = Message<"akuity.io.kargo.service.v1alpha1.Reverif * Use `create(ReverifyResponseSchema)` to create a new message. */ export const ReverifyResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 89); + messageDesc(file_api_service_v1alpha1_service, 91); /** * AbortVerificationRequest is the request for canceling running verification processes for a stage. @@ -2601,7 +2654,7 @@ export type AbortVerificationRequest = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(AbortVerificationRequestSchema)` to create a new message. */ export const AbortVerificationRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 90); + messageDesc(file_api_service_v1alpha1_service, 92); /** * AbortVerificationResponse is the response after aborting verification. @@ -2618,7 +2671,7 @@ export type AbortVerificationResponse = Message<"akuity.io.kargo.service.v1alpha * Use `create(AbortVerificationResponseSchema)` to create a new message. */ export const AbortVerificationResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 91); + messageDesc(file_api_service_v1alpha1_service, 93); /** * ListWarehousesRequest is the request for listing warehouses within a project. @@ -2639,7 +2692,7 @@ export type ListWarehousesRequest = Message<"akuity.io.kargo.service.v1alpha1.Li * Use `create(ListWarehousesRequestSchema)` to create a new message. */ export const ListWarehousesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 92); + messageDesc(file_api_service_v1alpha1_service, 94); /** * ListWarehousesResponse contains a list of warehouses within a project. @@ -2660,7 +2713,7 @@ export type ListWarehousesResponse = Message<"akuity.io.kargo.service.v1alpha1.L * Use `create(ListWarehousesResponseSchema)` to create a new message. */ export const ListWarehousesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 93); + messageDesc(file_api_service_v1alpha1_service, 95); /** * GetWarehouseRequest is the request for retrieving details of a specific warehouse. @@ -2695,7 +2748,7 @@ export type GetWarehouseRequest = Message<"akuity.io.kargo.service.v1alpha1.GetW * Use `create(GetWarehouseRequestSchema)` to create a new message. */ export const GetWarehouseRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 94); + messageDesc(file_api_service_v1alpha1_service, 96); /** * GetWarehouseResponse contains the requested warehouse information. @@ -2730,7 +2783,7 @@ export type GetWarehouseResponse = Message<"akuity.io.kargo.service.v1alpha1.Get * Use `create(GetWarehouseResponseSchema)` to create a new message. */ export const GetWarehouseResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 95); + messageDesc(file_api_service_v1alpha1_service, 97); /** * WatchWarehousesRequest is the request for watching warehouse changes via streaming. @@ -2758,7 +2811,7 @@ export type WatchWarehousesRequest = Message<"akuity.io.kargo.service.v1alpha1.W * Use `create(WatchWarehousesRequestSchema)` to create a new message. */ export const WatchWarehousesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 96); + messageDesc(file_api_service_v1alpha1_service, 98); /** * WatchWarehousesResponse contains warehouse change notifications. @@ -2786,7 +2839,7 @@ export type WatchWarehousesResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(WatchWarehousesResponseSchema)` to create a new message. */ export const WatchWarehousesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 97); + messageDesc(file_api_service_v1alpha1_service, 99); /** * DeleteWarehouseRequest is the request for deleting a warehouse. @@ -2814,7 +2867,7 @@ export type DeleteWarehouseRequest = Message<"akuity.io.kargo.service.v1alpha1.D * Use `create(DeleteWarehouseRequestSchema)` to create a new message. */ export const DeleteWarehouseRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 98); + messageDesc(file_api_service_v1alpha1_service, 100); /** * DeleteWarehouseResponse is the response after deleting a warehouse. @@ -2831,7 +2884,7 @@ export type DeleteWarehouseResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(DeleteWarehouseResponseSchema)` to create a new message. */ export const DeleteWarehouseResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 99); + messageDesc(file_api_service_v1alpha1_service, 101); /** * CreateConfigMapRequest is the request for creating a project-level, @@ -2892,7 +2945,7 @@ export type CreateConfigMapRequest = Message<"akuity.io.kargo.service.v1alpha1.C * Use `create(CreateConfigMapRequestSchema)` to create a new message. */ export const CreateConfigMapRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 100); + messageDesc(file_api_service_v1alpha1_service, 102); /** * CreateConfigMapResponse is the response containing the ConfigMap that was @@ -2914,7 +2967,7 @@ export type CreateConfigMapResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(CreateConfigMapResponseSchema)` to create a new message. */ export const CreateConfigMapResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 101); + messageDesc(file_api_service_v1alpha1_service, 103); /** * DeleteConfigMapRequest is the request for deleting a project-level, @@ -2953,7 +3006,7 @@ export type DeleteConfigMapRequest = Message<"akuity.io.kargo.service.v1alpha1.D * Use `create(DeleteConfigMapRequestSchema)` to create a new message. */ export const DeleteConfigMapRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 102); + messageDesc(file_api_service_v1alpha1_service, 104); /** * DeleteConfigMapResponse is the response returned after deleting a ConfigMap. @@ -2970,7 +3023,7 @@ export type DeleteConfigMapResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(DeleteConfigMapResponseSchema)` to create a new message. */ export const DeleteConfigMapResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 103); + messageDesc(file_api_service_v1alpha1_service, 105); /** * ListConfigMapsRequest is the request for listing all project-level, @@ -3002,7 +3055,7 @@ export type ListConfigMapsRequest = Message<"akuity.io.kargo.service.v1alpha1.Li * Use `create(ListConfigMapsRequestSchema)` to create a new message. */ export const ListConfigMapsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 104); + messageDesc(file_api_service_v1alpha1_service, 106); /** * ListConfigMapsResponse contains the list of ConfigMaps. @@ -3023,7 +3076,7 @@ export type ListConfigMapsResponse = Message<"akuity.io.kargo.service.v1alpha1.L * Use `create(ListConfigMapsResponseSchema)` to create a new message. */ export const ListConfigMapsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 105); + messageDesc(file_api_service_v1alpha1_service, 107); /** * GetConfigMapRequest is the request for getting a specific project-level, @@ -3070,7 +3123,7 @@ export type GetConfigMapRequest = Message<"akuity.io.kargo.service.v1alpha1.GetC * Use `create(GetConfigMapRequestSchema)` to create a new message. */ export const GetConfigMapRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 106); + messageDesc(file_api_service_v1alpha1_service, 108); /** * GetConfigMapResponse contains the requested ConfigMap. @@ -3105,7 +3158,7 @@ export type GetConfigMapResponse = Message<"akuity.io.kargo.service.v1alpha1.Get * Use `create(GetConfigMapResponseSchema)` to create a new message. */ export const GetConfigMapResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 107); + messageDesc(file_api_service_v1alpha1_service, 109); /** * UpdateConfigMapRequest is the request for updating a project-level, @@ -3166,7 +3219,7 @@ export type UpdateConfigMapRequest = Message<"akuity.io.kargo.service.v1alpha1.U * Use `create(UpdateConfigMapRequestSchema)` to create a new message. */ export const UpdateConfigMapRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 108); + messageDesc(file_api_service_v1alpha1_service, 110); /** * UpdateConfigMapResponse is the response containing the updated ConfigMap. @@ -3187,7 +3240,7 @@ export type UpdateConfigMapResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(UpdateConfigMapResponseSchema)` to create a new message. */ export const UpdateConfigMapResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 109); + messageDesc(file_api_service_v1alpha1_service, 111); /** * CreateRepoCredentialsRequest is the request for creating new credentials for accessing external repositories. @@ -3257,7 +3310,7 @@ export type CreateRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1al * Use `create(CreateRepoCredentialsRequestSchema)` to create a new message. */ export const CreateRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 110); + messageDesc(file_api_service_v1alpha1_service, 112); /** * CreateRepoCredentialsResponse contains the newly created repository credentials. @@ -3278,7 +3331,7 @@ export type CreateRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1a * Use `create(CreateRepoCredentialsResponseSchema)` to create a new message. */ export const CreateRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 111); + messageDesc(file_api_service_v1alpha1_service, 113); /** * DeleteRepoCredentialsRequest is the request for deleting existing repository credentials. @@ -3307,7 +3360,7 @@ export type DeleteRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1al * Use `create(DeleteRepoCredentialsRequestSchema)` to create a new message. */ export const DeleteRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 112); + messageDesc(file_api_service_v1alpha1_service, 114); /** * DeleteRepoCredentialsResponse is the response returned after deleting repository credentials. @@ -3324,7 +3377,7 @@ export type DeleteRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1a * Use `create(DeleteRepoCredentialsResponseSchema)` to create a new message. */ export const DeleteRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 113); + messageDesc(file_api_service_v1alpha1_service, 115); /** * GetRepoCredentialsRequest is the request for retrieving existing repository credentials. @@ -3359,7 +3412,7 @@ export type GetRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(GetRepoCredentialsRequestSchema)` to create a new message. */ export const GetRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 114); + messageDesc(file_api_service_v1alpha1_service, 116); /** * GetRepoCredentialsResponse contains the requested repository credentials information. @@ -3394,7 +3447,7 @@ export type GetRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(GetRepoCredentialsResponseSchema)` to create a new message. */ export const GetRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 115); + messageDesc(file_api_service_v1alpha1_service, 117); /** * ListRepoCredentialsRequest is the request for listing all repository credentials in a project. @@ -3415,7 +3468,7 @@ export type ListRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(ListRepoCredentialsRequestSchema)` to create a new message. */ export const ListRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 116); + messageDesc(file_api_service_v1alpha1_service, 118); /** * ListRepoCredentialsResponse contains a list of repository credentials for the specified project. @@ -3436,7 +3489,7 @@ export type ListRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(ListRepoCredentialsResponseSchema)` to create a new message. */ export const ListRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 117); + messageDesc(file_api_service_v1alpha1_service, 119); /** * UpdateRepoCredentialsRequest is the request for updating existing repository credentials. @@ -3506,7 +3559,7 @@ export type UpdateRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1al * Use `create(UpdateRepoCredentialsRequestSchema)` to create a new message. */ export const UpdateRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 118); + messageDesc(file_api_service_v1alpha1_service, 120); /** * UpdateRepoCredentialsResponse contains the updated repository credentials information. @@ -3527,7 +3580,7 @@ export type UpdateRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1a * Use `create(UpdateRepoCredentialsResponseSchema)` to create a new message. */ export const UpdateRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 119); + messageDesc(file_api_service_v1alpha1_service, 121); /** * ListGenericCredentialsRequest is the request for listing all generic @@ -3559,7 +3612,7 @@ export type ListGenericCredentialsRequest = Message<"akuity.io.kargo.service.v1a * Use `create(ListGenericCredentialsRequestSchema)` to create a new message. */ export const ListGenericCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 120); + messageDesc(file_api_service_v1alpha1_service, 122); /** * ListGenericCredentialsResponse contains a list of generic credentials for the specified project. @@ -3580,7 +3633,7 @@ export type ListGenericCredentialsResponse = Message<"akuity.io.kargo.service.v1 * Use `create(ListGenericCredentialsResponseSchema)` to create a new message. */ export const ListGenericCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 121); + messageDesc(file_api_service_v1alpha1_service, 123); /** * CreateGenericCredentialsRequest is the request for creating new generic @@ -3641,7 +3694,7 @@ export type CreateGenericCredentialsRequest = Message<"akuity.io.kargo.service.v * Use `create(CreateGenericCredentialsRequestSchema)` to create a new message. */ export const CreateGenericCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 122); + messageDesc(file_api_service_v1alpha1_service, 124); /** * CreateGenericCredentialsResponse contains the newly created generic credentials. @@ -3662,7 +3715,7 @@ export type CreateGenericCredentialsResponse = Message<"akuity.io.kargo.service. * Use `create(CreateGenericCredentialsResponseSchema)` to create a new message. */ export const CreateGenericCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 123); + messageDesc(file_api_service_v1alpha1_service, 125); /** * UpdateGenericCredentialsRequest is the request for updating existing generic credentials. @@ -3722,7 +3775,7 @@ export type UpdateGenericCredentialsRequest = Message<"akuity.io.kargo.service.v * Use `create(UpdateGenericCredentialsRequestSchema)` to create a new message. */ export const UpdateGenericCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 124); + messageDesc(file_api_service_v1alpha1_service, 126); /** * UpdateGenericCredentialsResponse contains the updated generic credentials information. @@ -3743,7 +3796,7 @@ export type UpdateGenericCredentialsResponse = Message<"akuity.io.kargo.service. * Use `create(UpdateGenericCredentialsResponseSchema)` to create a new message. */ export const UpdateGenericCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 125); + messageDesc(file_api_service_v1alpha1_service, 127); /** * DeleteGenericCredentialsRequest is the request for deleting generic @@ -3782,7 +3835,7 @@ export type DeleteGenericCredentialsRequest = Message<"akuity.io.kargo.service.v * Use `create(DeleteGenericCredentialsRequestSchema)` to create a new message. */ export const DeleteGenericCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 126); + messageDesc(file_api_service_v1alpha1_service, 128); /** * DeleteGenericCredentialsResponse is the response returned after deleting generic credentials. @@ -3799,7 +3852,7 @@ export type DeleteGenericCredentialsResponse = Message<"akuity.io.kargo.service. * Use `create(DeleteGenericCredentialsResponseSchema)` to create a new message. */ export const DeleteGenericCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 127); + messageDesc(file_api_service_v1alpha1_service, 129); /** * ListAnalysisTemplatesRequest is the request for listing all analysis templates in a project. @@ -3820,7 +3873,7 @@ export type ListAnalysisTemplatesRequest = Message<"akuity.io.kargo.service.v1al * Use `create(ListAnalysisTemplatesRequestSchema)` to create a new message. */ export const ListAnalysisTemplatesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 128); + messageDesc(file_api_service_v1alpha1_service, 130); /** * ListAnalysisTemplatesResponse contains a list of analysis templates for the specified project. @@ -3841,7 +3894,7 @@ export type ListAnalysisTemplatesResponse = Message<"akuity.io.kargo.service.v1a * Use `create(ListAnalysisTemplatesResponseSchema)` to create a new message. */ export const ListAnalysisTemplatesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 129); + messageDesc(file_api_service_v1alpha1_service, 131); /** * GetAnalysisTemplateRequest is the request for retrieving a specific analysis template. @@ -3876,7 +3929,7 @@ export type GetAnalysisTemplateRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(GetAnalysisTemplateRequestSchema)` to create a new message. */ export const GetAnalysisTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 130); + messageDesc(file_api_service_v1alpha1_service, 132); /** * GetAnalysisTemplateResponse contains the requested analysis template information. @@ -3911,7 +3964,7 @@ export type GetAnalysisTemplateResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(GetAnalysisTemplateResponseSchema)` to create a new message. */ export const GetAnalysisTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 131); + messageDesc(file_api_service_v1alpha1_service, 133); /** * DeleteAnalysisTemplateRequest is the request for deleting an analysis template. @@ -3939,7 +3992,7 @@ export type DeleteAnalysisTemplateRequest = Message<"akuity.io.kargo.service.v1a * Use `create(DeleteAnalysisTemplateRequestSchema)` to create a new message. */ export const DeleteAnalysisTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 132); + messageDesc(file_api_service_v1alpha1_service, 134); /** * DeleteAnalysisTemplateResponse is the response returned after deleting an analysis template. @@ -3956,7 +4009,7 @@ export type DeleteAnalysisTemplateResponse = Message<"akuity.io.kargo.service.v1 * Use `create(DeleteAnalysisTemplateResponseSchema)` to create a new message. */ export const DeleteAnalysisTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 133); + messageDesc(file_api_service_v1alpha1_service, 135); /** * ListClusterAnalysisTemplatesRequest is the request for listing all cluster-level analysis templates. @@ -3971,7 +4024,7 @@ export type ListClusterAnalysisTemplatesRequest = Message<"akuity.io.kargo.servi * Use `create(ListClusterAnalysisTemplatesRequestSchema)` to create a new message. */ export const ListClusterAnalysisTemplatesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 134); + messageDesc(file_api_service_v1alpha1_service, 136); /** * ListClusterAnalysisTemplatesResponse contains a list of cluster-level analysis templates. @@ -3992,7 +4045,7 @@ export type ListClusterAnalysisTemplatesResponse = Message<"akuity.io.kargo.serv * Use `create(ListClusterAnalysisTemplatesResponseSchema)` to create a new message. */ export const ListClusterAnalysisTemplatesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 135); + messageDesc(file_api_service_v1alpha1_service, 137); /** * GetClusterAnalysisTemplateRequest is the request for retrieving a specific cluster analysis template. @@ -4020,7 +4073,7 @@ export type GetClusterAnalysisTemplateRequest = Message<"akuity.io.kargo.service * Use `create(GetClusterAnalysisTemplateRequestSchema)` to create a new message. */ export const GetClusterAnalysisTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 136); + messageDesc(file_api_service_v1alpha1_service, 138); /** * GetClusterAnalysisTemplateResponse contains the requested cluster analysis template information. @@ -4055,7 +4108,7 @@ export type GetClusterAnalysisTemplateResponse = Message<"akuity.io.kargo.servic * Use `create(GetClusterAnalysisTemplateResponseSchema)` to create a new message. */ export const GetClusterAnalysisTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 137); + messageDesc(file_api_service_v1alpha1_service, 139); /** * DeleteClusterAnalysisTemplateRequest is the request for deleting a cluster analysis template. @@ -4076,7 +4129,7 @@ export type DeleteClusterAnalysisTemplateRequest = Message<"akuity.io.kargo.serv * Use `create(DeleteClusterAnalysisTemplateRequestSchema)` to create a new message. */ export const DeleteClusterAnalysisTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 138); + messageDesc(file_api_service_v1alpha1_service, 140); /** * DeleteClusterAnalysisTemplateResponse is the response returned after deleting a cluster analysis template. @@ -4093,7 +4146,7 @@ export type DeleteClusterAnalysisTemplateResponse = Message<"akuity.io.kargo.ser * Use `create(DeleteClusterAnalysisTemplateResponseSchema)` to create a new message. */ export const DeleteClusterAnalysisTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 139); + messageDesc(file_api_service_v1alpha1_service, 141); /** * GetAnalysisRunRequest is the request for retrieving a specific analysis run. @@ -4128,7 +4181,7 @@ export type GetAnalysisRunRequest = Message<"akuity.io.kargo.service.v1alpha1.Ge * Use `create(GetAnalysisRunRequestSchema)` to create a new message. */ export const GetAnalysisRunRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 140); + messageDesc(file_api_service_v1alpha1_service, 142); /** * GetAnalysisRunResponse contains the requested analysis run information. @@ -4163,7 +4216,7 @@ export type GetAnalysisRunResponse = Message<"akuity.io.kargo.service.v1alpha1.G * Use `create(GetAnalysisRunResponseSchema)` to create a new message. */ export const GetAnalysisRunResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 141); + messageDesc(file_api_service_v1alpha1_service, 143); /** * GetAnalysisRunLogsRequest is the request for retrieving logs from an analysis run. @@ -4205,7 +4258,7 @@ export type GetAnalysisRunLogsRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(GetAnalysisRunLogsRequestSchema)` to create a new message. */ export const GetAnalysisRunLogsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 142); + messageDesc(file_api_service_v1alpha1_service, 144); /** * GetAnalysisRunLogsResponse contains a chunk of logs from the analysis run. @@ -4226,7 +4279,7 @@ export type GetAnalysisRunLogsResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(GetAnalysisRunLogsResponseSchema)` to create a new message. */ export const GetAnalysisRunLogsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 143); + messageDesc(file_api_service_v1alpha1_service, 145); /** * ListProjectEventsRequest is the request for listing events in a project. @@ -4247,7 +4300,7 @@ export type ListProjectEventsRequest = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(ListProjectEventsRequestSchema)` to create a new message. */ export const ListProjectEventsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 144); + messageDesc(file_api_service_v1alpha1_service, 146); /** * ListProjectEventsResponse contains a list of events for the specified project. @@ -4268,7 +4321,7 @@ export type ListProjectEventsResponse = Message<"akuity.io.kargo.service.v1alpha * Use `create(ListProjectEventsResponseSchema)` to create a new message. */ export const ListProjectEventsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 145); + messageDesc(file_api_service_v1alpha1_service, 147); /** * ListPromotionTasksRequest is the request for listing promotion tasks in a project. @@ -4289,7 +4342,7 @@ export type ListPromotionTasksRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(ListPromotionTasksRequestSchema)` to create a new message. */ export const ListPromotionTasksRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 146); + messageDesc(file_api_service_v1alpha1_service, 148); /** * ListPromotionTasksResponse contains a list of promotion tasks for the specified project. @@ -4310,7 +4363,7 @@ export type ListPromotionTasksResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(ListPromotionTasksResponseSchema)` to create a new message. */ export const ListPromotionTasksResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 147); + messageDesc(file_api_service_v1alpha1_service, 149); /** * GetPromotionTaskRequest is the request for retrieving a specific promotion task. @@ -4345,7 +4398,7 @@ export type GetPromotionTaskRequest = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(GetPromotionTaskRequestSchema)` to create a new message. */ export const GetPromotionTaskRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 148); + messageDesc(file_api_service_v1alpha1_service, 150); /** * GetPromotionTaskResponse contains the requested promotion task information. @@ -4380,7 +4433,7 @@ export type GetPromotionTaskResponse = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(GetPromotionTaskResponseSchema)` to create a new message. */ export const GetPromotionTaskResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 149); + messageDesc(file_api_service_v1alpha1_service, 151); /** * ListClusterPromotionTasksRequest is the request for listing all cluster-level promotion tasks. @@ -4395,7 +4448,7 @@ export type ListClusterPromotionTasksRequest = Message<"akuity.io.kargo.service. * Use `create(ListClusterPromotionTasksRequestSchema)` to create a new message. */ export const ListClusterPromotionTasksRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 150); + messageDesc(file_api_service_v1alpha1_service, 152); /** * ListClusterPromotionTasksResponse contains a list of cluster-level promotion tasks. @@ -4416,7 +4469,7 @@ export type ListClusterPromotionTasksResponse = Message<"akuity.io.kargo.service * Use `create(ListClusterPromotionTasksResponseSchema)` to create a new message. */ export const ListClusterPromotionTasksResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 151); + messageDesc(file_api_service_v1alpha1_service, 153); /** * GetClusterPromotionTaskRequest is the request for retrieving a specific cluster promotion task. @@ -4444,7 +4497,7 @@ export type GetClusterPromotionTaskRequest = Message<"akuity.io.kargo.service.v1 * Use `create(GetClusterPromotionTaskRequestSchema)` to create a new message. */ export const GetClusterPromotionTaskRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 152); + messageDesc(file_api_service_v1alpha1_service, 154); /** * GetClusterPromotionTaskResponse contains the requested cluster promotion task information. @@ -4479,7 +4532,7 @@ export type GetClusterPromotionTaskResponse = Message<"akuity.io.kargo.service.v * Use `create(GetClusterPromotionTaskResponseSchema)` to create a new message. */ export const GetClusterPromotionTaskResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 153); + messageDesc(file_api_service_v1alpha1_service, 155); /** * CreateRoleRequest is a request to create a new Kargo Role virtual resource by @@ -4501,7 +4554,7 @@ export type CreateRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.Create * Use `create(CreateRoleRequestSchema)` to create a new message. */ export const CreateRoleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 154); + messageDesc(file_api_service_v1alpha1_service, 156); /** * CreateRoleResponse contains the details of a newly created Kargo Role virtual @@ -4523,7 +4576,7 @@ export type CreateRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.Creat * Use `create(CreateRoleResponseSchema)` to create a new message. */ export const CreateRoleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 155); + messageDesc(file_api_service_v1alpha1_service, 157); /** * DeleteRoleRequest is a request to delete a Kargo Role virtual resource by @@ -4552,7 +4605,7 @@ export type DeleteRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.Delete * Use `create(DeleteRoleRequestSchema)` to create a new message. */ export const DeleteRoleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 156); + messageDesc(file_api_service_v1alpha1_service, 158); /** * DeleteRoleResponse is the response returned after deleting a Kargo Role @@ -4570,7 +4623,7 @@ export type DeleteRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.Delet * Use `create(DeleteRoleResponseSchema)` to create a new message. */ export const DeleteRoleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 157); + messageDesc(file_api_service_v1alpha1_service, 159); /** * GetRoleRequest is a request to retrieve the details of a Kargo Role virtual @@ -4624,7 +4677,7 @@ export type GetRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.GetRoleRe * Use `create(GetRoleRequestSchema)` to create a new message. */ export const GetRoleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 158); + messageDesc(file_api_service_v1alpha1_service, 160); /** * GetRoleResponse contains the details of a Kargo Role virtual resource or its @@ -4669,7 +4722,7 @@ export type GetRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.GetRoleR * Use `create(GetRoleResponseSchema)` to create a new message. */ export const GetRoleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 159); + messageDesc(file_api_service_v1alpha1_service, 161); /** * Claims represents a collection of OIDC claims. @@ -4691,7 +4744,7 @@ export type Claims = Message<"akuity.io.kargo.service.v1alpha1.Claims"> & { * Use `create(ClaimsSchema)` to create a new message. */ export const ClaimsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 160); + messageDesc(file_api_service_v1alpha1_service, 162); /** * GrantRequest is a request to assign permissions to a Kargo Role virtual @@ -4744,7 +4797,7 @@ export type GrantRequest = Message<"akuity.io.kargo.service.v1alpha1.GrantReques * Use `create(GrantRequestSchema)` to create a new message. */ export const GrantRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 161); + messageDesc(file_api_service_v1alpha1_service, 163); /** * GrantResponse contains the details of a Kargo Role virtual resource after a @@ -4766,7 +4819,7 @@ export type GrantResponse = Message<"akuity.io.kargo.service.v1alpha1.GrantRespo * Use `create(GrantResponseSchema)` to create a new message. */ export const GrantResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 162); + messageDesc(file_api_service_v1alpha1_service, 164); /** * ListRolesRequests is a request to retrieve the details of all Kargo Role @@ -4804,7 +4857,7 @@ export type ListRolesRequest = Message<"akuity.io.kargo.service.v1alpha1.ListRol * Use `create(ListRolesRequestSchema)` to create a new message. */ export const ListRolesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 163); + messageDesc(file_api_service_v1alpha1_service, 165); /** * ListRolesResponse contains a list of Kargo Role virtual resources or their @@ -4835,7 +4888,7 @@ export type ListRolesResponse = Message<"akuity.io.kargo.service.v1alpha1.ListRo * Use `create(ListRolesResponseSchema)` to create a new message. */ export const ListRolesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 164); + messageDesc(file_api_service_v1alpha1_service, 166); /** * RevokeRequest is a request to remove permissions from a Kargo Role virtual @@ -4889,7 +4942,7 @@ export type RevokeRequest = Message<"akuity.io.kargo.service.v1alpha1.RevokeRequ * Use `create(RevokeRequestSchema)` to create a new message. */ export const RevokeRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 165); + messageDesc(file_api_service_v1alpha1_service, 167); /** * RevokeResponse contains the details of a Kargo Role virtual resource after a @@ -4912,7 +4965,7 @@ export type RevokeResponse = Message<"akuity.io.kargo.service.v1alpha1.RevokeRes * Use `create(RevokeResponseSchema)` to create a new message. */ export const RevokeResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 166); + messageDesc(file_api_service_v1alpha1_service, 168); /** * UpdateRoleRequest is a request to modify an existing Kargo Role virtual @@ -4934,7 +4987,7 @@ export type UpdateRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.Update * Use `create(UpdateRoleRequestSchema)` to create a new message. */ export const UpdateRoleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 167); + messageDesc(file_api_service_v1alpha1_service, 169); /** * UpdateRoleResponse contains the details of the updated Kargo Role virtual @@ -4956,7 +5009,7 @@ export type UpdateRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.Updat * Use `create(UpdateRoleResponseSchema)` to create a new message. */ export const UpdateRoleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 168); + messageDesc(file_api_service_v1alpha1_service, 170); /** * CreateAPITokenRequest is a request to generate a new bearer token associated @@ -5004,7 +5057,7 @@ export type CreateAPITokenRequest = Message<"akuity.io.kargo.service.v1alpha1.Cr * Use `create(CreateAPITokenRequestSchema)` to create a new message. */ export const CreateAPITokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 169); + messageDesc(file_api_service_v1alpha1_service, 171); /** * CreateAPITokenResponse contains a newly generated bearer token in the form of @@ -5026,7 +5079,7 @@ export type CreateAPITokenResponse = Message<"akuity.io.kargo.service.v1alpha1.C * Use `create(CreateAPITokenResponseSchema)` to create a new message. */ export const CreateAPITokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 170); + messageDesc(file_api_service_v1alpha1_service, 172); /** * DeleteAPITokenRequest is a request to delete a bearer token associated with a @@ -5065,7 +5118,7 @@ export type DeleteAPITokenRequest = Message<"akuity.io.kargo.service.v1alpha1.De * Use `create(DeleteAPITokenRequestSchema)` to create a new message. */ export const DeleteAPITokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 171); + messageDesc(file_api_service_v1alpha1_service, 173); /** * DeleteAPITokenResponse is the response returned after deleting a bearer token @@ -5083,7 +5136,7 @@ export type DeleteAPITokenResponse = Message<"akuity.io.kargo.service.v1alpha1.D * Use `create(DeleteAPITokenResponseSchema)` to create a new message. */ export const DeleteAPITokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 172); + messageDesc(file_api_service_v1alpha1_service, 174); /** * GetAPITokenRequest is a request to retrieve details of a bearer token @@ -5129,7 +5182,7 @@ export type GetAPITokenRequest = Message<"akuity.io.kargo.service.v1alpha1.GetAP * Use `create(GetAPITokenRequestSchema)` to create a new message. */ export const GetAPITokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 173); + messageDesc(file_api_service_v1alpha1_service, 175); /** * GetAPITokenResponse contains contains the details of a bearer token @@ -5166,7 +5219,7 @@ export type GetAPITokenResponse = Message<"akuity.io.kargo.service.v1alpha1.GetA * Use `create(GetAPITokenResponseSchema)` to create a new message. */ export const GetAPITokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 174); + messageDesc(file_api_service_v1alpha1_service, 176); /** * ListAPITokensRequest is a request to list bearer tokens associated with a @@ -5204,7 +5257,7 @@ export type ListAPITokensRequest = Message<"akuity.io.kargo.service.v1alpha1.Lis * Use `create(ListAPITokensRequestSchema)` to create a new message. */ export const ListAPITokensRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 175); + messageDesc(file_api_service_v1alpha1_service, 177); /** * ListAPITokensResponse contains a list of bearer tokens associated with a @@ -5227,7 +5280,7 @@ export type ListAPITokensResponse = Message<"akuity.io.kargo.service.v1alpha1.Li * Use `create(ListAPITokensResponseSchema)` to create a new message. */ export const ListAPITokensResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 176); + messageDesc(file_api_service_v1alpha1_service, 178); /** * @generated from message akuity.io.kargo.service.v1alpha1.RefreshResourceRequest @@ -5263,7 +5316,7 @@ export type RefreshResourceRequest = Message<"akuity.io.kargo.service.v1alpha1.R * Use `create(RefreshResourceRequestSchema)` to create a new message. */ export const RefreshResourceRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 177); + messageDesc(file_api_service_v1alpha1_service, 179); /** * @generated from message akuity.io.kargo.service.v1alpha1.RefreshResourceResponse @@ -5280,7 +5333,7 @@ export type RefreshResourceResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(RefreshResourceResponseSchema)` to create a new message. */ export const RefreshResourceResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 178); + messageDesc(file_api_service_v1alpha1_service, 180); /** * RawFormat specifies the format for raw resource representation. @@ -5461,6 +5514,20 @@ export const KargoService: GenService<{ input: typeof GetStageRequestSchema; output: typeof GetStageResponseSchema; }, + /** + * GetStageHealthOutputs returns the raw health output blob for the + * specified Stages in a project. Intended for clients that use + * ListStageSummaries for the list and need to resolve per-argocd-app + * health only for the Stages currently in viewport. Stages that do not + * exist or have no health output recorded are omitted from the response. + * + * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.GetStageHealthOutputs + */ + getStageHealthOutputs: { + methodKind: "unary"; + input: typeof GetStageHealthOutputsRequestSchema; + output: typeof GetStageHealthOutputsResponseSchema; + }, /** * WatchStages provides a streaming interface to monitor stage changes. * diff --git a/ui/src/gen/api/v2/core/core.ts b/ui/src/gen/api/v2/core/core.ts index c2b9e84c2c..1a836d0c05 100644 --- a/ui/src/gen/api/v2/core/core.ts +++ b/ui/src/gen/api/v2/core/core.ts @@ -27,6 +27,8 @@ import type { ClusterPromotionTaskList, CreateConfigMapRequestBody, Freight, + GetStageHealthOutputsParams, + GithubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponse, GithubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse, ListImages200, ListPromotionsParams, @@ -2897,6 +2899,193 @@ export const useRefreshPromotion = ( return useMutation(mutationOptions, queryClient); }; +/** + * Return the raw health output blob for the specified Stages +in a project. Stages that do not exist or have no recorded +health output are omitted from the response. Intended for +clients that use ListStageSummaries (which omits the output +blob) and need to lazily resolve health for Stages currently +in viewport. + * @summary Get Stage Health Outputs + */ +export type getStageHealthOutputsResponse200 = { + data: GithubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponse; + status: 200; +}; + +export type getStageHealthOutputsResponseSuccess = getStageHealthOutputsResponse200 & { + headers: Headers; +}; +export type getStageHealthOutputsResponse = getStageHealthOutputsResponseSuccess; + +export const getGetStageHealthOutputsUrl = ( + project: string, + params: GetStageHealthOutputsParams +) => { + const normalizedParams = new URLSearchParams(); + + Object.entries(params || {}).forEach(([key, value]) => { + const explodeParameters = ['stageNames']; + + if (Array.isArray(value) && explodeParameters.includes(key)) { + value.forEach((v) => { + normalizedParams.append(key, v === null ? 'null' : v.toString()); + }); + return; + } + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()); + } + }); + + const stringifiedParams = normalizedParams.toString(); + + return stringifiedParams.length > 0 + ? `/v1beta1/projects/${project}/stage-health-outputs?${stringifiedParams}` + : `/v1beta1/projects/${project}/stage-health-outputs`; +}; + +export const getStageHealthOutputs = async ( + project: string, + params: GetStageHealthOutputsParams, + options?: RequestInit +): Promise => { + return customFetch(getGetStageHealthOutputsUrl(project, params), { + ...options, + method: 'GET' + }); +}; + +export const getGetStageHealthOutputsQueryKey = ( + project?: string, + params?: GetStageHealthOutputsParams +) => { + return [ + `/v1beta1/projects/${project}/stage-health-outputs`, + ...(params ? [params] : []) + ] as const; +}; + +export const getGetStageHealthOutputsQueryOptions = < + TData = Awaited>, + TError = unknown +>( + project: string, + params: GetStageHealthOutputsParams, + options?: { + query?: Partial< + UseQueryOptions>, TError, TData> + >; + request?: SecondParameter; + } +) => { + const { query: queryOptions, request: requestOptions } = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getGetStageHealthOutputsQueryKey(project, params); + + const queryFn: QueryFunction>> = () => + getStageHealthOutputs(project, params, requestOptions); + + return { queryKey, queryFn, enabled: !!project, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type GetStageHealthOutputsQueryResult = NonNullable< + Awaited> +>; +export type GetStageHealthOutputsQueryError = unknown; + +export function useGetStageHealthOutputs< + TData = Awaited>, + TError = unknown +>( + project: string, + params: GetStageHealthOutputsParams, + options: { + query: Partial< + UseQueryOptions>, TError, TData> + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + 'initialData' + >; + request?: SecondParameter; + }, + queryClient?: QueryClient +): DefinedUseQueryResult & { queryKey: DataTag }; +export function useGetStageHealthOutputs< + TData = Awaited>, + TError = unknown +>( + project: string, + params: GetStageHealthOutputsParams, + options?: { + query?: Partial< + UseQueryOptions>, TError, TData> + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + 'initialData' + >; + request?: SecondParameter; + }, + queryClient?: QueryClient +): UseQueryResult & { queryKey: DataTag }; +export function useGetStageHealthOutputs< + TData = Awaited>, + TError = unknown +>( + project: string, + params: GetStageHealthOutputsParams, + options?: { + query?: Partial< + UseQueryOptions>, TError, TData> + >; + request?: SecondParameter; + }, + queryClient?: QueryClient +): UseQueryResult & { queryKey: DataTag }; +/** + * @summary Get Stage Health Outputs + */ + +export function useGetStageHealthOutputs< + TData = Awaited>, + TError = unknown +>( + project: string, + params: GetStageHealthOutputsParams, + options?: { + query?: Partial< + UseQueryOptions>, TError, TData> + >; + request?: SecondParameter; + }, + queryClient?: QueryClient +): UseQueryResult & { queryKey: DataTag } { + const queryOptions = getGetStageHealthOutputsQueryOptions(project, params, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult & { + queryKey: DataTag; + }; + + query.queryKey = queryOptions.queryKey; + + return query; +} + /** * List a lightweight projection of Stage resources from a project's namespace. Intended for UI list and graph views that diff --git a/ui/src/gen/api/v2/models/getStageHealthOutputsParams.ts b/ui/src/gen/api/v2/models/getStageHealthOutputsParams.ts new file mode 100644 index 0000000000..ddeff01416 --- /dev/null +++ b/ui/src/gen/api/v2/models/getStageHealthOutputsParams.ts @@ -0,0 +1,14 @@ +/** + * Generated by orval v7.19.0 🍺 + * Do not edit manually. + * Kargo API + * REST API for Kargo + * OpenAPI spec version: v1alpha1 + */ + +export type GetStageHealthOutputsParams = { + /** + * Stage names to fetch health outputs for + */ + stageNames: string[]; +}; diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponse.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponse.ts new file mode 100644 index 0000000000..e43cb2de3c --- /dev/null +++ b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponse.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v7.19.0 🍺 + * Do not edit manually. + * Kargo API + * REST API for Kargo + * OpenAPI spec version: v1alpha1 + */ +import type { GithubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponseHealthOutputs } from './githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponseHealthOutputs'; + +export interface GithubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponse { + /** health_outputs maps Stage name to the raw bytes of its +Stage.status.health.output.raw field. Stages that do not exist in the +project or have no health output recorded are omitted from the map. */ + health_outputs?: GithubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponseHealthOutputs; +} diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponseHealthOutputs.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponseHealthOutputs.ts new file mode 100644 index 0000000000..3aed61b410 --- /dev/null +++ b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponseHealthOutputs.ts @@ -0,0 +1,16 @@ +/** + * Generated by orval v7.19.0 🍺 + * Do not edit manually. + * Kargo API + * REST API for Kargo + * OpenAPI spec version: v1alpha1 + */ + +/** + * health_outputs maps Stage name to the raw bytes of its +Stage.status.health.output.raw field. Stages that do not exist in the +project or have no health output recorded are omitted from the map. + */ +export type GithubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponseHealthOutputs = { + [key: string]: number[]; +}; diff --git a/ui/src/gen/api/v2/models/index.ts b/ui/src/gen/api/v2/models/index.ts index a0ce86edd1..7b7b6f7941 100644 --- a/ui/src/gen/api/v2/models/index.ts +++ b/ui/src/gen/api/v2/models/index.ts @@ -80,6 +80,7 @@ export * from './getAnalysisRunLogsParams'; export * from './getConfigResponse'; export * from './getConfigResponseArgocdShards'; export * from './getProjectRole200'; +export * from './getStageHealthOutputsParams'; export * from './getSystemRole200'; export * from './gitClientConfig'; export * from './gitCommit'; @@ -87,6 +88,8 @@ export * from './gitDiscoveryResult'; export * from './gitHubWebhookReceiverConfig'; export * from './gitLabWebhookReceiverConfig'; export * from './giteaWebhookReceiverConfig'; +export * from './githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponse'; +export * from './githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponseHealthOutputs'; export * from './githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse'; export * from './githubComAkuityKargoApiServiceV1alpha1StageSpecSummary'; export * from './githubComAkuityKargoApiServiceV1alpha1StageStatusSummary'; From 5b208b4ec7ef24cf0c2090a0846c87edf4099b56 Mon Sep 17 00:00:00 2001 From: Kent Rancourt Date: Fri, 24 Apr 2026 13:02:03 -0400 Subject: [PATCH 4/7] refactor list stages' warehouse filter for consistency Signed-off-by: Kent Rancourt --- pkg/api/stage.go | 46 +++++ pkg/api/stage_test.go | 274 ++++++++++++++++++++++++++++ pkg/server/list_stages_v1alpha1.go | 55 ++---- pkg/server/watch_stages_v1alpha1.go | 3 +- 4 files changed, 336 insertions(+), 42 deletions(-) diff --git a/pkg/api/stage.go b/pkg/api/stage.go index 969c05714d..af0e334c2c 100644 --- a/pkg/api/stage.go +++ b/pkg/api/stage.go @@ -40,6 +40,52 @@ func GetStage( return &stage, nil } +// ListStagesOptions defines the options for listing Stages. +type ListStagesOptions struct { + // Warehouses is an optional list of Warehouse names to filter the Stages by. + Warehouses []string +} + +// ListStagesByWarehouses lists Stages in the given Project, optionally +// filtered by the provided options. +func ListStagesByWarehouses( + ctx context.Context, + c client.Client, + project string, + opts *ListStagesOptions, +) ([]kargoapi.Stage, error) { + if opts == nil { + opts = &ListStagesOptions{} + } + var list kargoapi.StageList + if err := c.List(ctx, &list, client.InNamespace(project)); err != nil { + return nil, err + } + if len(opts.Warehouses) == 0 { + return list.Items, nil + } + var stages []kargoapi.Stage + for _, stage := range list.Items { + if StageMatchesAnyWarehouse(&stage, opts.Warehouses) { + stages = append(stages, stage) + } + } + return stages, nil +} + +// StageMatchesAnyWarehouse returns true if the Stage requests Freight that +// originated from at least one of the specified warehouses, either directly +// or through upstream stages. +func StageMatchesAnyWarehouse(stage *kargoapi.Stage, warehouses []string) bool { + for _, req := range stage.Spec.RequestedFreight { + if req.Origin.Kind == kargoapi.FreightOriginKindWarehouse && + slices.Contains(warehouses, req.Origin.Name) { + return true + } + } + return false +} + // ListFreightAvailableToStage lists all Freight available to the Stage for any // reason. This includes: // diff --git a/pkg/api/stage_test.go b/pkg/api/stage_test.go index ece6b86743..6a04bf1992 100644 --- a/pkg/api/stage_test.go +++ b/pkg/api/stage_test.go @@ -69,6 +69,280 @@ func TestGetStage(t *testing.T) { } } +func TestListStagesByWarehouses(t *testing.T) { + const testProject = "fake-namespace" + const otherProject = "other-namespace" + const testWarehouse1 = "fake-warehouse1" + const testWarehouse2 = "fake-warehouse2" + + scheme := k8sruntime.NewScheme() + require.NoError(t, kargoapi.SchemeBuilder.AddToScheme(scheme)) + + stageInProjectFromWarehouse1 := &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: testProject, + Name: "stage-1", + }, + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{ + Kind: kargoapi.FreightOriginKindWarehouse, + Name: testWarehouse1, + }, + }}, + }, + } + stageInProjectFromWarehouse2 := &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: testProject, + Name: "stage-2", + }, + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{ + Kind: kargoapi.FreightOriginKindWarehouse, + Name: testWarehouse2, + }, + }}, + }, + } + stageInOtherProject := &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: otherProject, + Name: "stage-3", + }, + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{ + Kind: kargoapi.FreightOriginKindWarehouse, + Name: testWarehouse1, + }, + }}, + }, + } + + testCases := []struct { + name string + opts *ListStagesOptions + objects []client.Object + interceptor interceptor.Funcs + assertions func(*testing.T, []kargoapi.Stage, error) + }{ + { + name: "error listing Stages", + interceptor: interceptor.Funcs{ + List: func( + context.Context, + client.WithWatch, + client.ObjectList, + ...client.ListOption, + ) error { + return errors.New("something went wrong") + }, + }, + assertions: func(t *testing.T, stages []kargoapi.Stage, err error) { + require.ErrorContains(t, err, "something went wrong") + require.Nil(t, stages) + }, + }, + { + name: "nil opts returns all Stages in Project", + objects: []client.Object{ + stageInProjectFromWarehouse1, + stageInProjectFromWarehouse2, + stageInOtherProject, + }, + assertions: func(t *testing.T, stages []kargoapi.Stage, err error) { + require.NoError(t, err) + require.Len(t, stages, 2) + }, + }, + { + name: "empty Warehouses filter returns all Stages in Project", + opts: &ListStagesOptions{}, + objects: []client.Object{ + stageInProjectFromWarehouse1, + stageInProjectFromWarehouse2, + stageInOtherProject, + }, + assertions: func(t *testing.T, stages []kargoapi.Stage, err error) { + require.NoError(t, err) + require.Len(t, stages, 2) + }, + }, + { + name: "Warehouses filter returns only matching Stages", + opts: &ListStagesOptions{ + Warehouses: []string{testWarehouse1}, + }, + objects: []client.Object{ + stageInProjectFromWarehouse1, + stageInProjectFromWarehouse2, + stageInOtherProject, + }, + assertions: func(t *testing.T, stages []kargoapi.Stage, err error) { + require.NoError(t, err) + require.Len(t, stages, 1) + require.Equal(t, "stage-1", stages[0].Name) + }, + }, + { + name: "Warehouses filter with no matches returns empty", + opts: &ListStagesOptions{ + Warehouses: []string{"unknown-warehouse"}, + }, + objects: []client.Object{ + stageInProjectFromWarehouse1, + stageInProjectFromWarehouse2, + }, + assertions: func(t *testing.T, stages []kargoapi.Stage, err error) { + require.NoError(t, err) + require.Empty(t, stages) + }, + }, + } + + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + c := fake.NewClientBuilder().WithScheme(scheme). + WithObjects(testCase.objects...). + WithInterceptorFuncs(testCase.interceptor). + Build() + stages, err := ListStagesByWarehouses( + t.Context(), c, testProject, testCase.opts, + ) + testCase.assertions(t, stages, err) + }) + } +} + +func TestStageMatchesAnyWarehouse(t *testing.T) { + const testWarehouse1 = "fake-warehouse1" + const testWarehouse2 = "fake-warehouse2" + + testCases := []struct { + name string + stage *kargoapi.Stage + warehouses []string + expected bool + }{ + { + name: "no requested freight", + stage: &kargoapi.Stage{}, + warehouses: []string{testWarehouse1}, + expected: false, + }, + { + name: "empty warehouses list", + stage: &kargoapi.Stage{ + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{ + Kind: kargoapi.FreightOriginKindWarehouse, + Name: testWarehouse1, + }, + }}, + }, + }, + warehouses: nil, + expected: false, + }, + { + name: "no matching warehouse", + stage: &kargoapi.Stage{ + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{ + Kind: kargoapi.FreightOriginKindWarehouse, + Name: testWarehouse1, + }, + }}, + }, + }, + warehouses: []string{testWarehouse2}, + expected: false, + }, + { + name: "name matches but origin kind is not Warehouse", + stage: &kargoapi.Stage{ + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{ + Kind: kargoapi.FreightOriginKind("OtherKind"), + Name: testWarehouse1, + }, + }}, + }, + }, + warehouses: []string{testWarehouse1}, + expected: false, + }, + { + name: "single requested freight matches", + stage: &kargoapi.Stage{ + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{ + Kind: kargoapi.FreightOriginKindWarehouse, + Name: testWarehouse1, + }, + }}, + }, + }, + warehouses: []string{testWarehouse1}, + expected: true, + }, + { + name: "matches one of multiple warehouses", + stage: &kargoapi.Stage{ + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{{ + Origin: kargoapi.FreightOrigin{ + Kind: kargoapi.FreightOriginKindWarehouse, + Name: testWarehouse2, + }, + }}, + }, + }, + warehouses: []string{testWarehouse1, testWarehouse2}, + expected: true, + }, + { + name: "matches one of multiple requested freight", + stage: &kargoapi.Stage{ + Spec: kargoapi.StageSpec{ + RequestedFreight: []kargoapi.FreightRequest{ + { + Origin: kargoapi.FreightOrigin{ + Kind: kargoapi.FreightOriginKindWarehouse, + Name: "unrelated-warehouse", + }, + }, + { + Origin: kargoapi.FreightOrigin{ + Kind: kargoapi.FreightOriginKindWarehouse, + Name: testWarehouse1, + }, + }, + }, + }, + }, + warehouses: []string{testWarehouse1}, + expected: true, + }, + } + + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + require.Equal( + t, + testCase.expected, + StageMatchesAnyWarehouse(testCase.stage, testCase.warehouses), + ) + }) + } +} + func TestListFreightAvailableToStage(t *testing.T) { const testProject = "fake-namespace" const testWarehouse1 = "fake-warehouse1" diff --git a/pkg/server/list_stages_v1alpha1.go b/pkg/server/list_stages_v1alpha1.go index 6bac4a094f..0ee937477b 100644 --- a/pkg/server/list_stages_v1alpha1.go +++ b/pkg/server/list_stages_v1alpha1.go @@ -14,6 +14,7 @@ import ( svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" kargoapi "github.com/akuity/kargo/api/v1alpha1" + "github.com/akuity/kargo/pkg/api" "github.com/akuity/kargo/pkg/logging" ) @@ -32,7 +33,12 @@ func (s *server) ListStages( warehouses := req.Msg.GetFreightOrigins() - items, err := s.listStagesByWarehouses(ctx, project, warehouses) + items, err := api.ListStagesByWarehouses( + ctx, + s.client, + project, + &api.ListStagesOptions{Warehouses: warehouses}, + ) if err != nil { return nil, fmt.Errorf("list stages: %w", err) } @@ -71,7 +77,12 @@ func (s *server) listStages(c *gin.Context) { return } - items, err := s.listStagesByWarehouses(ctx, project, warehouses) + items, err := api.ListStagesByWarehouses( + ctx, + s.client, + project, + &api.ListStagesOptions{Warehouses: warehouses}, + ) if err != nil { _ = c.Error(err) return @@ -119,7 +130,7 @@ func (s *server) watchStages(c *gin.Context, project string, warehouses []string continue } - if len(warehouses) > 0 && !stageMatchesAnyWarehouse(stage, warehouses) { + if len(warehouses) > 0 && !api.StageMatchesAnyWarehouse(stage, warehouses) { continue } @@ -129,41 +140,3 @@ func (s *server) watchStages(c *gin.Context, project string, warehouses []string } } } - -// listStagesByWarehouses lists Stages in the given project, optionally -// filtered to those that request Freight from at least one of the specified -// warehouses (directly or through upstream stages). When warehouses is empty, -// all Stages are returned. -func (s *server) listStagesByWarehouses( - ctx context.Context, - project string, - warehouses []string, -) ([]kargoapi.Stage, error) { - var list kargoapi.StageList - if err := s.client.List(ctx, &list, client.InNamespace(project)); err != nil { - return nil, err - } - if len(warehouses) == 0 { - return list.Items, nil - } - var stages []kargoapi.Stage - for _, stage := range list.Items { - if stageMatchesAnyWarehouse(&stage, warehouses) { - stages = append(stages, stage) - } - } - return stages, nil -} - -// stageMatchesAnyWarehouse returns true if the Stage requests Freight that -// originated from at least one of the specified warehouses, either directly -// or through upstream stages. -func stageMatchesAnyWarehouse(stage *kargoapi.Stage, warehouses []string) bool { - for _, req := range stage.Spec.RequestedFreight { - if req.Origin.Kind == kargoapi.FreightOriginKindWarehouse && - slices.Contains(warehouses, req.Origin.Name) { - return true - } - } - return false -} diff --git a/pkg/server/watch_stages_v1alpha1.go b/pkg/server/watch_stages_v1alpha1.go index 9c58102d38..466aa5d3e7 100644 --- a/pkg/server/watch_stages_v1alpha1.go +++ b/pkg/server/watch_stages_v1alpha1.go @@ -9,6 +9,7 @@ import ( svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" kargoapi "github.com/akuity/kargo/api/v1alpha1" + "github.com/akuity/kargo/pkg/api" "github.com/akuity/kargo/pkg/logging" ) @@ -61,7 +62,7 @@ func (s *server) WatchStages( if !ok { return fmt.Errorf("unexpected object type %T", e.Object) } - if len(warehouses) > 0 && !stageMatchesAnyWarehouse(stage, warehouses) { + if len(warehouses) > 0 && !api.StageMatchesAnyWarehouse(stage, warehouses) { continue } if err := stream.Send(&svcv1alpha1.WatchStagesResponse{ From c045301966a1552f06896ac95a5d4aade759f5ef Mon Sep 17 00:00:00 2001 From: Jacob Boykin Date: Fri, 24 Apr 2026 13:44:16 -0400 Subject: [PATCH 5/7] refactor(api): collapse StageSummary endpoints into ListStages summary flag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the dedicated ListStageSummaries / WatchStageSummaries RPCs and their StageSummary / StageSpecSummary / StageStatusSummary messages with a `summary` bool on ListStagesRequest / WatchStagesRequest. When set, heavy fields are stripped from each returned Stage in place: - status.freightHistory truncated to the current element (index 0) - spec.promotionTemplate.spec.steps[*].config cleared (kind/as/name kept) - status.health.output cleared (use GetStageHealthOutputs for lazy fetch) The UI continues to derive has-verification from `spec.verification != nil` and promotion-step-count from `len(spec.promotionTemplate.spec.steps)`, so no derived fields or dedicated projection types are needed. ListStagesResponse gains resource_version and WatchStagesRequest gains summary and resource_version so list-then-watch works across both full and summary modes. GetStageHealthOutputs is unchanged — it remains a separate batch RPC for lazy-loading argocd health blobs per viewport. Addresses review feedback asking why a dedicated endpoint was used instead of a flag on the existing ListStages/WatchStages pair. Signed-off-by: Jacob Boykin Signed-off-by: Jacob Boykin --- api/service/v1alpha1/service.pb.go | 10673 +++++++--------- api/service/v1alpha1/service.proto | 150 +- .../svcv1alpha1connect/service.connect.go | 90 +- docs/docs/90-api-documentation.md | 82 +- pkg/client/generated/core/core_client.go | 58 +- .../core/list_stage_summaries_parameters.go | 194 - .../core/list_stage_summaries_responses.go | 104 - .../generated/core/list_stages_parameters.go | 34 + ..._v1alpha1_list_stage_summaries_response.go | 133 - ...api_service_v1alpha1_stage_spec_summary.go | 141 - ...i_service_v1alpha1_stage_status_summary.go | 242 - ...argo_api_service_v1alpha1_stage_summary.go | 133 - .../get_stage_health_outputs_v1alpha1.go | 4 +- pkg/server/list_stage_summaries_v1alpha1.go | 201 - .../list_stage_summaries_v1alpha1_test.go | 262 - pkg/server/list_stages_v1alpha1.go | 75 +- pkg/server/rest_router.go | 1 - pkg/server/stage_to_summary.go | 100 - pkg/server/stage_to_summary_test.go | 204 - pkg/server/watch_stage_summaries_v1alpha1.go | 88 - .../watch_stage_summaries_v1alpha1_test.go | 203 - pkg/server/watch_stages_v1alpha1.go | 10 + swagger.json | 181 +- .../service-KargoService_connectquery.ts | 17 +- ui/src/gen/api/service/v1alpha1/service_pb.ts | 658 +- ui/src/gen/api/v2/core/core.ts | 179 +- ...rviceV1alpha1ListStageSummariesResponse.ts | 18 - ...KargoApiServiceV1alpha1StageSpecSummary.ts | 24 - ...rgoApiServiceV1alpha1StageStatusSummary.ts | 32 - ...uityKargoApiServiceV1alpha1StageSummary.ts | 19 - ui/src/gen/api/v2/models/index.ts | 5 - .../api/v2/models/listStageSummariesParams.ts | 14 - ui/src/gen/api/v2/models/listStagesParams.ts | 4 + 33 files changed, 5358 insertions(+), 8975 deletions(-) delete mode 100644 pkg/client/generated/core/list_stage_summaries_parameters.go delete mode 100644 pkg/client/generated/core/list_stage_summaries_responses.go delete mode 100644 pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_list_stage_summaries_response.go delete mode 100644 pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_spec_summary.go delete mode 100644 pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_status_summary.go delete mode 100644 pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_summary.go delete mode 100644 pkg/server/list_stage_summaries_v1alpha1.go delete mode 100644 pkg/server/list_stage_summaries_v1alpha1_test.go delete mode 100644 pkg/server/stage_to_summary.go delete mode 100644 pkg/server/stage_to_summary_test.go delete mode 100644 pkg/server/watch_stage_summaries_v1alpha1.go delete mode 100644 pkg/server/watch_stage_summaries_v1alpha1_test.go delete mode 100644 ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse.ts delete mode 100644 ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSpecSummary.ts delete mode 100644 ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageStatusSummary.ts delete mode 100644 ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSummary.ts delete mode 100644 ui/src/gen/api/v2/models/listStageSummariesParams.ts diff --git a/api/service/v1alpha1/service.pb.go b/api/service/v1alpha1/service.pb.go index 43aa2cba33..cbae61715a 100644 --- a/api/service/v1alpha1/service.pb.go +++ b/api/service/v1alpha1/service.pb.go @@ -14,8 +14,8 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" anypb "google.golang.org/protobuf/types/known/anypb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - v11 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + v1 "k8s.io/api/core/v1" + _ "k8s.io/apimachinery/pkg/apis/meta/v1" reflect "reflect" sync "sync" ) @@ -1539,6 +1539,16 @@ type ListStagesRequest struct { // When specified, only Stages that subscribe to at least one of the named // Warehouses are returned. FreightOrigins []string `protobuf:"bytes,2,rep,name=freight_origins,json=freightOrigins,proto3" json:"freight_origins,omitempty"` + // summary, when true, strips heavy fields from each Stage in the response. + // Intended for list and graph views that render many Stages but do not + // need full FreightHistory, PromotionTemplate step configuration, or the + // raw health output blob. Stripped Stages still carry: metadata, shard, + // requestedFreight, promotionTemplate step skeletons (kind/as/name but + // not config), verification, conditions, currentFreight (history[0]), + // currentPromotion, lastPromotion, health metadata (without output.raw), + // observedGeneration, autoPromotionEnabled. Use summary=false (default) + // to retrieve the full Stage, or GetStage for a single Stage in detail. + Summary bool `protobuf:"varint,3,opt,name=summary,proto3" json:"summary,omitempty"` } func (x *ListStagesRequest) Reset() { @@ -1587,14 +1597,30 @@ func (x *ListStagesRequest) GetFreightOrigins() []string { return nil } +func (x *ListStagesRequest) GetSummary() bool { + if x != nil { + return x.Summary + } + return false +} + // ListStagesResponse contains a list of stages within a project. type ListStagesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // stages is the list of Stage resources found in the project. + // stages is the list of Stage resources found in the project. When the + // corresponding request set summary=true, each Stage has heavy fields + // stripped: status.freightHistory is truncated to index 0, + // spec.promotionTemplate.spec.steps[*].config is cleared, and + // status.health.output is nil. Stages []*v1alpha1.Stage `protobuf:"bytes,1,rep,name=stages,proto3" json:"stages,omitempty"` + // resource_version is the Kubernetes ResourceVersion of the underlying + // StageList. Clients may pass this value to WatchStages to begin watching + // from the exact point this list was taken, receiving only subsequent + // changes without redundant initial events. + ResourceVersion string `protobuf:"bytes,2,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"` } func (x *ListStagesResponse) Reset() { @@ -1636,6 +1662,13 @@ func (x *ListStagesResponse) GetStages() []*v1alpha1.Stage { return nil } +func (x *ListStagesResponse) GetResourceVersion() string { + if x != nil { + return x.ResourceVersion + } + return "" +} + // ListImagesRequest is the request for listing images and their usage across stages. type ListImagesRequest struct { state protoimpl.MessageState @@ -2108,6 +2141,15 @@ type WatchStagesRequest struct { // When specified, only events for Stages that subscribe to at least one of // the named Warehouses are streamed. FreightOrigins []string `protobuf:"bytes,3,rep,name=freight_origins,json=freightOrigins,proto3" json:"freight_origins,omitempty"` + // summary, when true, applies the same projection as + // ListStagesRequest.summary to each streamed Stage. See the summary + // field on ListStagesRequest for the list of fields stripped. + Summary bool `protobuf:"varint,4,opt,name=summary,proto3" json:"summary,omitempty"` + // resource_version is an optional Kubernetes ResourceVersion. When set, + // the watch begins at the specified version, allowing clients to resume + // from a prior list (see ListStagesResponse.resource_version) or watch + // without missing or duplicating events. + ResourceVersion string `protobuf:"bytes,5,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"` } func (x *WatchStagesRequest) Reset() { @@ -2163,6 +2205,20 @@ func (x *WatchStagesRequest) GetFreightOrigins() []string { return nil } +func (x *WatchStagesRequest) GetSummary() bool { + if x != nil { + return x.Summary + } + return false +} + +func (x *WatchStagesRequest) GetResourceVersion() string { + if x != nil { + return x.ResourceVersion + } + return "" +} + // WatchStagesResponse contains stage change notifications. type WatchStagesResponse struct { state protoimpl.MessageState @@ -2318,26 +2374,16 @@ func (*DeleteStageResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{37} } -// StageSummary is a lightweight projection of a Stage resource intended for -// use by clients rendering list or graph views of many stages. It omits -// heavy fields that are only needed when a single stage is inspected in -// detail (e.g. full FreightHistory beyond the current FreightCollection, -// PromotionTemplate step configuration, and Verification configuration). -type StageSummary struct { +type GetClusterConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // metadata contains the Stage's identity and Kubernetes object metadata. - Metadata *v1.ObjectMeta `protobuf:"bytes,1,opt,name=metadata,proto3,oneof" json:"metadata,omitempty"` - // spec contains the subset of StageSpec fields needed by list/graph views. - Spec *StageSpecSummary `protobuf:"bytes,2,opt,name=spec,proto3,oneof" json:"spec,omitempty"` - // status contains the subset of StageStatus fields needed by list/graph views. - Status *StageStatusSummary `protobuf:"bytes,3,opt,name=status,proto3,oneof" json:"status,omitempty"` + Format RawFormat `protobuf:"varint,1,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *StageSummary) Reset() { - *x = StageSummary{} +func (x *GetClusterConfigRequest) Reset() { + *x = GetClusterConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2345,13 +2391,13 @@ func (x *StageSummary) Reset() { } } -func (x *StageSummary) String() string { +func (x *GetClusterConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StageSummary) ProtoMessage() {} +func (*GetClusterConfigRequest) ProtoMessage() {} -func (x *StageSummary) ProtoReflect() protoreflect.Message { +func (x *GetClusterConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2363,56 +2409,32 @@ func (x *StageSummary) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StageSummary.ProtoReflect.Descriptor instead. -func (*StageSummary) Descriptor() ([]byte, []int) { +// Deprecated: Use GetClusterConfigRequest.ProtoReflect.Descriptor instead. +func (*GetClusterConfigRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{38} } -func (x *StageSummary) GetMetadata() *v1.ObjectMeta { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *StageSummary) GetSpec() *StageSpecSummary { - if x != nil { - return x.Spec - } - return nil -} - -func (x *StageSummary) GetStatus() *StageStatusSummary { +func (x *GetClusterConfigRequest) GetFormat() RawFormat { if x != nil { - return x.Status + return x.Format } - return nil + return RawFormat_RAW_FORMAT_UNSPECIFIED } -// StageSpecSummary is the subset of StageSpec fields returned by -// ListStageSummaries. See StageSummary for the motivation. -type StageSpecSummary struct { +type GetClusterConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // shard is the name of the shard that the Stage belongs to, mirroring - // StageSpec.shard. - Shard string `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` - // requestedFreight mirrors StageSpec.requestedFreight. This is needed in - // full to render graph edges between Stages and their upstream sources. - RequestedFreight []*v1alpha1.FreightRequest `protobuf:"bytes,2,rep,name=requested_freight,json=requestedFreight,proto3" json:"requested_freight,omitempty"` - // promotionStepCount is the number of promotion steps defined in the - // Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. - // Use GetStage to retrieve the full step configuration. - PromotionStepCount int32 `protobuf:"varint,3,opt,name=promotion_step_count,json=promotionStepCount,proto3" json:"promotion_step_count,omitempty"` - // hasVerification indicates whether the Stage defines a Verification. - // Use GetStage to retrieve the full Verification configuration. - HasVerification bool `protobuf:"varint,4,opt,name=has_verification,json=hasVerification,proto3" json:"has_verification,omitempty"` + // Types that are assignable to Result: + // + // *GetClusterConfigResponse_ClusterConfig + // *GetClusterConfigResponse_Raw + Result isGetClusterConfigResponse_Result `protobuf_oneof:"result"` } -func (x *StageSpecSummary) Reset() { - *x = StageSpecSummary{} +func (x *GetClusterConfigResponse) Reset() { + *x = GetClusterConfigResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2420,13 +2442,13 @@ func (x *StageSpecSummary) Reset() { } } -func (x *StageSpecSummary) String() string { +func (x *GetClusterConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StageSpecSummary) ProtoMessage() {} +func (*GetClusterConfigResponse) ProtoMessage() {} -func (x *StageSpecSummary) ProtoReflect() protoreflect.Message { +func (x *GetClusterConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2438,68 +2460,56 @@ func (x *StageSpecSummary) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StageSpecSummary.ProtoReflect.Descriptor instead. -func (*StageSpecSummary) Descriptor() ([]byte, []int) { +// Deprecated: Use GetClusterConfigResponse.ProtoReflect.Descriptor instead. +func (*GetClusterConfigResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{39} } -func (x *StageSpecSummary) GetShard() string { - if x != nil { - return x.Shard +func (m *GetClusterConfigResponse) GetResult() isGetClusterConfigResponse_Result { + if m != nil { + return m.Result } - return "" + return nil } -func (x *StageSpecSummary) GetRequestedFreight() []*v1alpha1.FreightRequest { - if x != nil { - return x.RequestedFreight +func (x *GetClusterConfigResponse) GetClusterConfig() *v1alpha1.ClusterConfig { + if x, ok := x.GetResult().(*GetClusterConfigResponse_ClusterConfig); ok { + return x.ClusterConfig } return nil } -func (x *StageSpecSummary) GetPromotionStepCount() int32 { - if x != nil { - return x.PromotionStepCount +func (x *GetClusterConfigResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetClusterConfigResponse_Raw); ok { + return x.Raw } - return 0 + return nil } -func (x *StageSpecSummary) GetHasVerification() bool { - if x != nil { - return x.HasVerification - } - return false +type isGetClusterConfigResponse_Result interface { + isGetClusterConfigResponse_Result() +} + +type GetClusterConfigResponse_ClusterConfig struct { + ClusterConfig *v1alpha1.ClusterConfig `protobuf:"bytes,1,opt,name=cluster_config,json=clusterConfig,proto3,oneof"` +} + +type GetClusterConfigResponse_Raw struct { + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` } -// StageStatusSummary is the subset of StageStatus fields returned by -// ListStageSummaries. See StageSummary for the motivation. -type StageStatusSummary struct { +func (*GetClusterConfigResponse_ClusterConfig) isGetClusterConfigResponse_Result() {} + +func (*GetClusterConfigResponse_Raw) isGetClusterConfigResponse_Result() {} + +type DeleteClusterConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // conditions mirrors StageStatus.conditions. - Conditions []*v1.Condition `protobuf:"bytes,1,rep,name=conditions,proto3" json:"conditions,omitempty"` - // lastHandledRefresh mirrors StageStatus.lastHandledRefresh. - LastHandledRefresh string `protobuf:"bytes,2,opt,name=last_handled_refresh,json=lastHandledRefresh,proto3" json:"last_handled_refresh,omitempty"` - // currentFreight is the FreightCollection currently deployed to the Stage - // (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has - // been deployed. Use GetStage to retrieve the full FreightHistory. - CurrentFreight *v1alpha1.FreightCollection `protobuf:"bytes,3,opt,name=current_freight,json=currentFreight,proto3,oneof" json:"current_freight,omitempty"` - // currentPromotion mirrors StageStatus.currentPromotion. - CurrentPromotion *v1alpha1.PromotionReference `protobuf:"bytes,4,opt,name=current_promotion,json=currentPromotion,proto3,oneof" json:"current_promotion,omitempty"` - // lastPromotion mirrors StageStatus.lastPromotion. - LastPromotion *v1alpha1.PromotionReference `protobuf:"bytes,5,opt,name=last_promotion,json=lastPromotion,proto3,oneof" json:"last_promotion,omitempty"` - // health mirrors StageStatus.health. - Health *v1alpha1.Health `protobuf:"bytes,6,opt,name=health,proto3,oneof" json:"health,omitempty"` - // observedGeneration mirrors StageStatus.observedGeneration. - ObservedGeneration int64 `protobuf:"varint,7,opt,name=observed_generation,json=observedGeneration,proto3" json:"observed_generation,omitempty"` - // autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. - AutoPromotionEnabled bool `protobuf:"varint,8,opt,name=auto_promotion_enabled,json=autoPromotionEnabled,proto3" json:"auto_promotion_enabled,omitempty"` } -func (x *StageStatusSummary) Reset() { - *x = StageStatusSummary{} +func (x *DeleteClusterConfigRequest) Reset() { + *x = DeleteClusterConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2507,13 +2517,13 @@ func (x *StageStatusSummary) Reset() { } } -func (x *StageStatusSummary) String() string { +func (x *DeleteClusterConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StageStatusSummary) ProtoMessage() {} +func (*DeleteClusterConfigRequest) ProtoMessage() {} -func (x *StageStatusSummary) ProtoReflect() protoreflect.Message { +func (x *DeleteClusterConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2525,85 +2535,19 @@ func (x *StageStatusSummary) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StageStatusSummary.ProtoReflect.Descriptor instead. -func (*StageStatusSummary) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteClusterConfigRequest.ProtoReflect.Descriptor instead. +func (*DeleteClusterConfigRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{40} } -func (x *StageStatusSummary) GetConditions() []*v1.Condition { - if x != nil { - return x.Conditions - } - return nil -} - -func (x *StageStatusSummary) GetLastHandledRefresh() string { - if x != nil { - return x.LastHandledRefresh - } - return "" -} - -func (x *StageStatusSummary) GetCurrentFreight() *v1alpha1.FreightCollection { - if x != nil { - return x.CurrentFreight - } - return nil -} - -func (x *StageStatusSummary) GetCurrentPromotion() *v1alpha1.PromotionReference { - if x != nil { - return x.CurrentPromotion - } - return nil -} - -func (x *StageStatusSummary) GetLastPromotion() *v1alpha1.PromotionReference { - if x != nil { - return x.LastPromotion - } - return nil -} - -func (x *StageStatusSummary) GetHealth() *v1alpha1.Health { - if x != nil { - return x.Health - } - return nil -} - -func (x *StageStatusSummary) GetObservedGeneration() int64 { - if x != nil { - return x.ObservedGeneration - } - return 0 -} - -func (x *StageStatusSummary) GetAutoPromotionEnabled() bool { - if x != nil { - return x.AutoPromotionEnabled - } - return false -} - -// ListStageSummariesRequest is the request for listing stage summaries -// within a project. -type ListStageSummariesRequest struct { +type DeleteClusterConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // project is the name of the project whose stage summaries should be listed. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // freightOrigins is an optional list of Warehouse names. When non-empty, - // only Stages that request Freight originating from at least one of the - // named Warehouses (directly or transitively via upstream Stages) will be - // returned. Mirrors ListStagesRequest.freightOrigins. - FreightOrigins []string `protobuf:"bytes,2,rep,name=freight_origins,json=freightOrigins,proto3" json:"freight_origins,omitempty"` } -func (x *ListStageSummariesRequest) Reset() { - *x = ListStageSummariesRequest{} +func (x *DeleteClusterConfigResponse) Reset() { + *x = DeleteClusterConfigResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2611,13 +2555,13 @@ func (x *ListStageSummariesRequest) Reset() { } } -func (x *ListStageSummariesRequest) String() string { +func (x *DeleteClusterConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListStageSummariesRequest) ProtoMessage() {} +func (*DeleteClusterConfigResponse) ProtoMessage() {} -func (x *ListStageSummariesRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteClusterConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2629,42 +2573,19 @@ func (x *ListStageSummariesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListStageSummariesRequest.ProtoReflect.Descriptor instead. -func (*ListStageSummariesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteClusterConfigResponse.ProtoReflect.Descriptor instead. +func (*DeleteClusterConfigResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{41} } -func (x *ListStageSummariesRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *ListStageSummariesRequest) GetFreightOrigins() []string { - if x != nil { - return x.FreightOrigins - } - return nil -} - -// ListStageSummariesResponse contains a list of stage summaries within a project. -type ListStageSummariesResponse struct { +type WatchClusterConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // stageSummaries is the list of StageSummary objects found in the project. - StageSummaries []*StageSummary `protobuf:"bytes,1,rep,name=stage_summaries,json=stageSummaries,proto3" json:"stage_summaries,omitempty"` - // resourceVersion is the Kubernetes ResourceVersion of the underlying - // StageList. Clients may pass this value to WatchStageSummaries to begin - // watching from the exact point this list was taken, receiving only - // subsequent changes without redundant initial events. - ResourceVersion string `protobuf:"bytes,2,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"` } -func (x *ListStageSummariesResponse) Reset() { - *x = ListStageSummariesResponse{} +func (x *WatchClusterConfigRequest) Reset() { + *x = WatchClusterConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2672,13 +2593,13 @@ func (x *ListStageSummariesResponse) Reset() { } } -func (x *ListStageSummariesResponse) String() string { +func (x *WatchClusterConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListStageSummariesResponse) ProtoMessage() {} +func (*WatchClusterConfigRequest) ProtoMessage() {} -func (x *ListStageSummariesResponse) ProtoReflect() protoreflect.Message { +func (x *WatchClusterConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2690,48 +2611,22 @@ func (x *ListStageSummariesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListStageSummariesResponse.ProtoReflect.Descriptor instead. -func (*ListStageSummariesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchClusterConfigRequest.ProtoReflect.Descriptor instead. +func (*WatchClusterConfigRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{42} } -func (x *ListStageSummariesResponse) GetStageSummaries() []*StageSummary { - if x != nil { - return x.StageSummaries - } - return nil -} - -func (x *ListStageSummariesResponse) GetResourceVersion() string { - if x != nil { - return x.ResourceVersion - } - return "" -} - -// WatchStageSummariesRequest is the request for watching stage summaries via streaming. -type WatchStageSummariesRequest struct { +type WatchClusterConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose stage summaries should be watched. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of a specific stage to watch, if empty all stages in the project are watched. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // freightOrigins is an optional list of Warehouse names. When non-empty, - // only events for Stages that request Freight originating from at least - // one of the named Warehouses (directly or transitively via upstream - // Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. - FreightOrigins []string `protobuf:"bytes,3,rep,name=freight_origins,json=freightOrigins,proto3" json:"freight_origins,omitempty"` - // resourceVersion is an optional Kubernetes ResourceVersion. When set, - // the watch begins at the specified version, allowing clients to resume - // from a prior list or watch without missing or duplicating events. - ResourceVersion string `protobuf:"bytes,4,opt,name=resource_version,json=resourceVersion,proto3" json:"resource_version,omitempty"` + ClusterConfig *v1alpha1.ClusterConfig `protobuf:"bytes,1,opt,name=cluster_config,json=clusterConfig,proto3" json:"cluster_config,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // ADDED / MODIFIED / DELETED } -func (x *WatchStageSummariesRequest) Reset() { - *x = WatchStageSummariesRequest{} +func (x *WatchClusterConfigResponse) Reset() { + *x = WatchClusterConfigResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2739,13 +2634,13 @@ func (x *WatchStageSummariesRequest) Reset() { } } -func (x *WatchStageSummariesRequest) String() string { +func (x *WatchClusterConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchStageSummariesRequest) ProtoMessage() {} +func (*WatchClusterConfigResponse) ProtoMessage() {} -func (x *WatchStageSummariesRequest) ProtoReflect() protoreflect.Message { +func (x *WatchClusterConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2757,53 +2652,39 @@ func (x *WatchStageSummariesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchStageSummariesRequest.ProtoReflect.Descriptor instead. -func (*WatchStageSummariesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchClusterConfigResponse.ProtoReflect.Descriptor instead. +func (*WatchClusterConfigResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{43} } -func (x *WatchStageSummariesRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *WatchStageSummariesRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *WatchStageSummariesRequest) GetFreightOrigins() []string { +func (x *WatchClusterConfigResponse) GetClusterConfig() *v1alpha1.ClusterConfig { if x != nil { - return x.FreightOrigins + return x.ClusterConfig } return nil } -func (x *WatchStageSummariesRequest) GetResourceVersion() string { +func (x *WatchClusterConfigResponse) GetType() string { if x != nil { - return x.ResourceVersion + return x.Type } return "" } -// WatchStageSummariesResponse contains stage summary change notifications. -type WatchStageSummariesResponse struct { +// ListPromotionsRequest is the request for retrieving all promotions, optionally filtered by stage. +type ListPromotionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // stageSummary is the StageSummary for the Stage that changed. - StageSummary *StageSummary `protobuf:"bytes,1,opt,name=stage_summary,json=stageSummary,proto3,oneof" json:"stage_summary,omitempty"` - // type indicates the type of change (ADDED, MODIFIED, DELETED). - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + // project is the name of the project whose promotions should be listed. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // stage is an optional stage name to filter promotions by. + Stage *string `protobuf:"bytes,2,opt,name=stage,proto3,oneof" json:"stage,omitempty"` } -func (x *WatchStageSummariesResponse) Reset() { - *x = WatchStageSummariesResponse{} +func (x *ListPromotionsRequest) Reset() { + *x = ListPromotionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2811,13 +2692,13 @@ func (x *WatchStageSummariesResponse) Reset() { } } -func (x *WatchStageSummariesResponse) String() string { +func (x *ListPromotionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchStageSummariesResponse) ProtoMessage() {} +func (*ListPromotionsRequest) ProtoMessage() {} -func (x *WatchStageSummariesResponse) ProtoReflect() protoreflect.Message { +func (x *ListPromotionsRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2829,35 +2710,37 @@ func (x *WatchStageSummariesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchStageSummariesResponse.ProtoReflect.Descriptor instead. -func (*WatchStageSummariesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPromotionsRequest.ProtoReflect.Descriptor instead. +func (*ListPromotionsRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{44} } -func (x *WatchStageSummariesResponse) GetStageSummary() *StageSummary { +func (x *ListPromotionsRequest) GetProject() string { if x != nil { - return x.StageSummary + return x.Project } - return nil + return "" } -func (x *WatchStageSummariesResponse) GetType() string { - if x != nil { - return x.Type +func (x *ListPromotionsRequest) GetStage() string { + if x != nil && x.Stage != nil { + return *x.Stage } return "" } -type GetClusterConfigRequest struct { +// ListPromotionsResponse contains a list of promotions within a project. +type ListPromotionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Format RawFormat `protobuf:"varint,1,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` + // promotions is the list of Promotion resources found in the project. + Promotions []*v1alpha1.Promotion `protobuf:"bytes,1,rep,name=promotions,proto3" json:"promotions,omitempty"` } -func (x *GetClusterConfigRequest) Reset() { - *x = GetClusterConfigRequest{} +func (x *ListPromotionsResponse) Reset() { + *x = ListPromotionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2865,13 +2748,13 @@ func (x *GetClusterConfigRequest) Reset() { } } -func (x *GetClusterConfigRequest) String() string { +func (x *ListPromotionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClusterConfigRequest) ProtoMessage() {} +func (*ListPromotionsResponse) ProtoMessage() {} -func (x *GetClusterConfigRequest) ProtoReflect() protoreflect.Message { +func (x *ListPromotionsResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2883,32 +2766,32 @@ func (x *GetClusterConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetClusterConfigRequest.ProtoReflect.Descriptor instead. -func (*GetClusterConfigRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPromotionsResponse.ProtoReflect.Descriptor instead. +func (*ListPromotionsResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{45} } -func (x *GetClusterConfigRequest) GetFormat() RawFormat { +func (x *ListPromotionsResponse) GetPromotions() []*v1alpha1.Promotion { if x != nil { - return x.Format + return x.Promotions } - return RawFormat_RAW_FORMAT_UNSPECIFIED + return nil } -type GetClusterConfigResponse struct { +// WatchPromotionsRequest is the request for watching promotion changes via streaming. +type WatchPromotionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Result: - // - // *GetClusterConfigResponse_ClusterConfig - // *GetClusterConfigResponse_Raw - Result isGetClusterConfigResponse_Result `protobuf_oneof:"result"` + // project is the name of the project whose promotions should be watched. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // stage is an optional stage name to filter promotions by. + Stage *string `protobuf:"bytes,2,opt,name=stage,proto3,oneof" json:"stage,omitempty"` } -func (x *GetClusterConfigResponse) Reset() { - *x = GetClusterConfigResponse{} +func (x *WatchPromotionsRequest) Reset() { + *x = WatchPromotionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2916,13 +2799,13 @@ func (x *GetClusterConfigResponse) Reset() { } } -func (x *GetClusterConfigResponse) String() string { +func (x *WatchPromotionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClusterConfigResponse) ProtoMessage() {} +func (*WatchPromotionsRequest) ProtoMessage() {} -func (x *GetClusterConfigResponse) ProtoReflect() protoreflect.Message { +func (x *WatchPromotionsRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2934,56 +2817,39 @@ func (x *GetClusterConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetClusterConfigResponse.ProtoReflect.Descriptor instead. -func (*GetClusterConfigResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchPromotionsRequest.ProtoReflect.Descriptor instead. +func (*WatchPromotionsRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{46} } -func (m *GetClusterConfigResponse) GetResult() isGetClusterConfigResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetClusterConfigResponse) GetClusterConfig() *v1alpha1.ClusterConfig { - if x, ok := x.GetResult().(*GetClusterConfigResponse_ClusterConfig); ok { - return x.ClusterConfig +func (x *WatchPromotionsRequest) GetProject() string { + if x != nil { + return x.Project } - return nil + return "" } -func (x *GetClusterConfigResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetClusterConfigResponse_Raw); ok { - return x.Raw +func (x *WatchPromotionsRequest) GetStage() string { + if x != nil && x.Stage != nil { + return *x.Stage } - return nil -} - -type isGetClusterConfigResponse_Result interface { - isGetClusterConfigResponse_Result() -} - -type GetClusterConfigResponse_ClusterConfig struct { - ClusterConfig *v1alpha1.ClusterConfig `protobuf:"bytes,1,opt,name=cluster_config,json=clusterConfig,proto3,oneof"` -} - -type GetClusterConfigResponse_Raw struct { - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` + return "" } -func (*GetClusterConfigResponse_ClusterConfig) isGetClusterConfigResponse_Result() {} - -func (*GetClusterConfigResponse_Raw) isGetClusterConfigResponse_Result() {} - -type DeleteClusterConfigRequest struct { +// WatchPromotionsResponse contains promotion change notifications. +type WatchPromotionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // promotion is the Promotion resource that changed. + Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3" json:"promotion,omitempty"` + // type indicates the type of change (ADDED, MODIFIED, DELETED). + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (x *DeleteClusterConfigRequest) Reset() { - *x = DeleteClusterConfigRequest{} +func (x *WatchPromotionsResponse) Reset() { + *x = WatchPromotionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2991,13 +2857,13 @@ func (x *DeleteClusterConfigRequest) Reset() { } } -func (x *DeleteClusterConfigRequest) String() string { +func (x *WatchPromotionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteClusterConfigRequest) ProtoMessage() {} +func (*WatchPromotionsResponse) ProtoMessage() {} -func (x *DeleteClusterConfigRequest) ProtoReflect() protoreflect.Message { +func (x *WatchPromotionsResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3009,19 +2875,41 @@ func (x *DeleteClusterConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteClusterConfigRequest.ProtoReflect.Descriptor instead. -func (*DeleteClusterConfigRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchPromotionsResponse.ProtoReflect.Descriptor instead. +func (*WatchPromotionsResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{47} } -type DeleteClusterConfigResponse struct { +func (x *WatchPromotionsResponse) GetPromotion() *v1alpha1.Promotion { + if x != nil { + return x.Promotion + } + return nil +} + +func (x *WatchPromotionsResponse) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// GetPromotionRequest is the request for retrieving details of a specific promotion. +type GetPromotionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // project is the name of the project containing the promotion. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the promotion to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the format for raw resource representation. + Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *DeleteClusterConfigResponse) Reset() { - *x = DeleteClusterConfigResponse{} +func (x *GetPromotionRequest) Reset() { + *x = GetPromotionRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3029,13 +2917,13 @@ func (x *DeleteClusterConfigResponse) Reset() { } } -func (x *DeleteClusterConfigResponse) String() string { +func (x *GetPromotionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteClusterConfigResponse) ProtoMessage() {} +func (*GetPromotionRequest) ProtoMessage() {} -func (x *DeleteClusterConfigResponse) ProtoReflect() protoreflect.Message { +func (x *GetPromotionRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3047,19 +2935,47 @@ func (x *DeleteClusterConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteClusterConfigResponse.ProtoReflect.Descriptor instead. -func (*DeleteClusterConfigResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPromotionRequest.ProtoReflect.Descriptor instead. +func (*GetPromotionRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{48} } -type WatchClusterConfigRequest struct { +func (x *GetPromotionRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *GetPromotionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetPromotionRequest) GetFormat() RawFormat { + if x != nil { + return x.Format + } + return RawFormat_RAW_FORMAT_UNSPECIFIED +} + +// GetPromotionResponse contains the requested promotion information. +type GetPromotionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Types that are assignable to Result: + // + // *GetPromotionResponse_Promotion + // *GetPromotionResponse_Raw + Result isGetPromotionResponse_Result `protobuf_oneof:"result"` } -func (x *WatchClusterConfigRequest) Reset() { - *x = WatchClusterConfigRequest{} +func (x *GetPromotionResponse) Reset() { + *x = GetPromotionResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3067,13 +2983,13 @@ func (x *WatchClusterConfigRequest) Reset() { } } -func (x *WatchClusterConfigRequest) String() string { +func (x *GetPromotionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchClusterConfigRequest) ProtoMessage() {} +func (*GetPromotionResponse) ProtoMessage() {} -func (x *WatchClusterConfigRequest) ProtoReflect() protoreflect.Message { +func (x *GetPromotionResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3085,22 +3001,64 @@ func (x *WatchClusterConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchClusterConfigRequest.ProtoReflect.Descriptor instead. -func (*WatchClusterConfigRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPromotionResponse.ProtoReflect.Descriptor instead. +func (*GetPromotionResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{49} } -type WatchClusterConfigResponse struct { +func (m *GetPromotionResponse) GetResult() isGetPromotionResponse_Result { + if m != nil { + return m.Result + } + return nil +} + +func (x *GetPromotionResponse) GetPromotion() *v1alpha1.Promotion { + if x, ok := x.GetResult().(*GetPromotionResponse_Promotion); ok { + return x.Promotion + } + return nil +} + +func (x *GetPromotionResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetPromotionResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetPromotionResponse_Result interface { + isGetPromotionResponse_Result() +} + +type GetPromotionResponse_Promotion struct { + // promotion contains the Promotion resource in structured format. + Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3,oneof"` +} + +type GetPromotionResponse_Raw struct { + // raw contains the Promotion resource in the requested raw format. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetPromotionResponse_Promotion) isGetPromotionResponse_Result() {} + +func (*GetPromotionResponse_Raw) isGetPromotionResponse_Result() {} + +// WatchPromotionRequest is the request for watching a specific promotion via streaming. +type WatchPromotionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ClusterConfig *v1alpha1.ClusterConfig `protobuf:"bytes,1,opt,name=cluster_config,json=clusterConfig,proto3" json:"cluster_config,omitempty"` - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // ADDED / MODIFIED / DELETED + // project is the name of the project containing the promotion. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the promotion to watch. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *WatchClusterConfigResponse) Reset() { - *x = WatchClusterConfigResponse{} +func (x *WatchPromotionRequest) Reset() { + *x = WatchPromotionRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3108,13 +3066,13 @@ func (x *WatchClusterConfigResponse) Reset() { } } -func (x *WatchClusterConfigResponse) String() string { +func (x *WatchPromotionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchClusterConfigResponse) ProtoMessage() {} +func (*WatchPromotionRequest) ProtoMessage() {} -func (x *WatchClusterConfigResponse) ProtoReflect() protoreflect.Message { +func (x *WatchPromotionRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3126,39 +3084,39 @@ func (x *WatchClusterConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchClusterConfigResponse.ProtoReflect.Descriptor instead. -func (*WatchClusterConfigResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchPromotionRequest.ProtoReflect.Descriptor instead. +func (*WatchPromotionRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{50} } -func (x *WatchClusterConfigResponse) GetClusterConfig() *v1alpha1.ClusterConfig { +func (x *WatchPromotionRequest) GetProject() string { if x != nil { - return x.ClusterConfig + return x.Project } - return nil + return "" } -func (x *WatchClusterConfigResponse) GetType() string { +func (x *WatchPromotionRequest) GetName() string { if x != nil { - return x.Type + return x.Name } return "" } -// ListPromotionsRequest is the request for retrieving all promotions, optionally filtered by stage. -type ListPromotionsRequest struct { +// WatchPromotionResponse contains specific promotion change notifications. +type WatchPromotionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose promotions should be listed. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is an optional stage name to filter promotions by. - Stage *string `protobuf:"bytes,2,opt,name=stage,proto3,oneof" json:"stage,omitempty"` + // promotion is the Promotion resource that changed. + Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3" json:"promotion,omitempty"` + // type indicates the type of change (ADDED, MODIFIED, DELETED). + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (x *ListPromotionsRequest) Reset() { - *x = ListPromotionsRequest{} +func (x *WatchPromotionResponse) Reset() { + *x = WatchPromotionResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3166,13 +3124,13 @@ func (x *ListPromotionsRequest) Reset() { } } -func (x *ListPromotionsRequest) String() string { +func (x *WatchPromotionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPromotionsRequest) ProtoMessage() {} +func (*WatchPromotionResponse) ProtoMessage() {} -func (x *ListPromotionsRequest) ProtoReflect() protoreflect.Message { +func (x *WatchPromotionResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3184,37 +3142,39 @@ func (x *ListPromotionsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPromotionsRequest.ProtoReflect.Descriptor instead. -func (*ListPromotionsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchPromotionResponse.ProtoReflect.Descriptor instead. +func (*WatchPromotionResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{51} } -func (x *ListPromotionsRequest) GetProject() string { +func (x *WatchPromotionResponse) GetPromotion() *v1alpha1.Promotion { if x != nil { - return x.Project + return x.Promotion } - return "" + return nil } -func (x *ListPromotionsRequest) GetStage() string { - if x != nil && x.Stage != nil { - return *x.Stage +func (x *WatchPromotionResponse) GetType() string { + if x != nil { + return x.Type } return "" } -// ListPromotionsResponse contains a list of promotions within a project. -type ListPromotionsResponse struct { +// AbortPromotionRequest is the request for canceling a running promotion process. +type AbortPromotionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // promotions is the list of Promotion resources found in the project. - Promotions []*v1alpha1.Promotion `protobuf:"bytes,1,rep,name=promotions,proto3" json:"promotions,omitempty"` + // project is the name of the project containing the promotion. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the promotion to abort. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListPromotionsResponse) Reset() { - *x = ListPromotionsResponse{} +func (x *AbortPromotionRequest) Reset() { + *x = AbortPromotionRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3222,13 +3182,13 @@ func (x *ListPromotionsResponse) Reset() { } } -func (x *ListPromotionsResponse) String() string { +func (x *AbortPromotionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPromotionsResponse) ProtoMessage() {} +func (*AbortPromotionRequest) ProtoMessage() {} -func (x *ListPromotionsResponse) ProtoReflect() protoreflect.Message { +func (x *AbortPromotionRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3240,32 +3200,34 @@ func (x *ListPromotionsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPromotionsResponse.ProtoReflect.Descriptor instead. -func (*ListPromotionsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use AbortPromotionRequest.ProtoReflect.Descriptor instead. +func (*AbortPromotionRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{52} } -func (x *ListPromotionsResponse) GetPromotions() []*v1alpha1.Promotion { +func (x *AbortPromotionRequest) GetProject() string { if x != nil { - return x.Promotions + return x.Project } - return nil + return "" } -// WatchPromotionsRequest is the request for watching promotion changes via streaming. -type WatchPromotionsRequest struct { +func (x *AbortPromotionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// AbortPromotionResponse is the response after aborting a promotion. +type AbortPromotionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // project is the name of the project whose promotions should be watched. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is an optional stage name to filter promotions by. - Stage *string `protobuf:"bytes,2,opt,name=stage,proto3,oneof" json:"stage,omitempty"` } -func (x *WatchPromotionsRequest) Reset() { - *x = WatchPromotionsRequest{} +func (x *AbortPromotionResponse) Reset() { + *x = AbortPromotionResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3273,13 +3235,13 @@ func (x *WatchPromotionsRequest) Reset() { } } -func (x *WatchPromotionsRequest) String() string { +func (x *AbortPromotionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchPromotionsRequest) ProtoMessage() {} +func (*AbortPromotionResponse) ProtoMessage() {} -func (x *WatchPromotionsRequest) ProtoReflect() protoreflect.Message { +func (x *AbortPromotionResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3291,39 +3253,23 @@ func (x *WatchPromotionsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchPromotionsRequest.ProtoReflect.Descriptor instead. -func (*WatchPromotionsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use AbortPromotionResponse.ProtoReflect.Descriptor instead. +func (*AbortPromotionResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{53} } -func (x *WatchPromotionsRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *WatchPromotionsRequest) GetStage() string { - if x != nil && x.Stage != nil { - return *x.Stage - } - return "" -} - -// WatchPromotionsResponse contains promotion change notifications. -type WatchPromotionsResponse struct { +// DeleteProjectRequest is the request for deleting a project and all associated resources. +type DeleteProjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // promotion is the Promotion resource that changed. - Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3" json:"promotion,omitempty"` - // type indicates the type of change (ADDED, MODIFIED, DELETED). - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + // name is the name of the project to delete. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *WatchPromotionsResponse) Reset() { - *x = WatchPromotionsResponse{} +func (x *DeleteProjectRequest) Reset() { + *x = DeleteProjectRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3331,13 +3277,13 @@ func (x *WatchPromotionsResponse) Reset() { } } -func (x *WatchPromotionsResponse) String() string { +func (x *DeleteProjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchPromotionsResponse) ProtoMessage() {} +func (*DeleteProjectRequest) ProtoMessage() {} -func (x *WatchPromotionsResponse) ProtoReflect() protoreflect.Message { +func (x *DeleteProjectRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3349,41 +3295,27 @@ func (x *WatchPromotionsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchPromotionsResponse.ProtoReflect.Descriptor instead. -func (*WatchPromotionsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteProjectRequest.ProtoReflect.Descriptor instead. +func (*DeleteProjectRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{54} } -func (x *WatchPromotionsResponse) GetPromotion() *v1alpha1.Promotion { - if x != nil { - return x.Promotion - } - return nil -} - -func (x *WatchPromotionsResponse) GetType() string { +func (x *DeleteProjectRequest) GetName() string { if x != nil { - return x.Type + return x.Name } return "" } -// GetPromotionRequest is the request for retrieving details of a specific promotion. -type GetPromotionRequest struct { +// DeleteProjectResponse is the response after deleting a project. +type DeleteProjectResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // project is the name of the project containing the promotion. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the promotion to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the format for raw resource representation. - Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *GetPromotionRequest) Reset() { - *x = GetPromotionRequest{} +func (x *DeleteProjectResponse) Reset() { + *x = DeleteProjectResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3391,13 +3323,13 @@ func (x *GetPromotionRequest) Reset() { } } -func (x *GetPromotionRequest) String() string { +func (x *DeleteProjectResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPromotionRequest) ProtoMessage() {} +func (*DeleteProjectResponse) ProtoMessage() {} -func (x *GetPromotionRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteProjectResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3409,62 +3341,99 @@ func (x *GetPromotionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPromotionRequest.ProtoReflect.Descriptor instead. -func (*GetPromotionRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteProjectResponse.ProtoReflect.Descriptor instead. +func (*DeleteProjectResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{55} } -func (x *GetPromotionRequest) GetProject() string { - if x != nil { - return x.Project +// GetProjectRequest is the request for retrieving details of a specific project. +type GetProjectRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // name is the name of the project to retrieve. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the format for raw resource representation. + Format RawFormat `protobuf:"varint,2,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` +} + +func (x *GetProjectRequest) Reset() { + *x = GetProjectRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *GetPromotionRequest) GetName() string { +func (x *GetProjectRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProjectRequest) ProtoMessage() {} + +func (x *GetProjectRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[56] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetProjectRequest.ProtoReflect.Descriptor instead. +func (*GetProjectRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{56} +} + +func (x *GetProjectRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *GetPromotionRequest) GetFormat() RawFormat { +func (x *GetProjectRequest) GetFormat() RawFormat { if x != nil { return x.Format } return RawFormat_RAW_FORMAT_UNSPECIFIED } -// GetPromotionResponse contains the requested promotion information. -type GetPromotionResponse struct { +// GetProjectResponse contains the requested project information. +type GetProjectResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Result: // - // *GetPromotionResponse_Promotion - // *GetPromotionResponse_Raw - Result isGetPromotionResponse_Result `protobuf_oneof:"result"` + // *GetProjectResponse_Project + // *GetProjectResponse_Raw + Result isGetProjectResponse_Result `protobuf_oneof:"result"` } -func (x *GetPromotionResponse) Reset() { - *x = GetPromotionResponse{} +func (x *GetProjectResponse) Reset() { + *x = GetProjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[56] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetPromotionResponse) String() string { +func (x *GetProjectResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPromotionResponse) ProtoMessage() {} +func (*GetProjectResponse) ProtoMessage() {} -func (x *GetPromotionResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[56] +func (x *GetProjectResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3475,79 +3444,86 @@ func (x *GetPromotionResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPromotionResponse.ProtoReflect.Descriptor instead. -func (*GetPromotionResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{56} +// Deprecated: Use GetProjectResponse.ProtoReflect.Descriptor instead. +func (*GetProjectResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{57} } -func (m *GetPromotionResponse) GetResult() isGetPromotionResponse_Result { +func (m *GetProjectResponse) GetResult() isGetProjectResponse_Result { if m != nil { return m.Result } return nil } -func (x *GetPromotionResponse) GetPromotion() *v1alpha1.Promotion { - if x, ok := x.GetResult().(*GetPromotionResponse_Promotion); ok { - return x.Promotion - } - return nil +func (x *GetProjectResponse) GetProject() *v1alpha1.Project { + if x, ok := x.GetResult().(*GetProjectResponse_Project); ok { + return x.Project + } + return nil } -func (x *GetPromotionResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetPromotionResponse_Raw); ok { +func (x *GetProjectResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetProjectResponse_Raw); ok { return x.Raw } return nil } -type isGetPromotionResponse_Result interface { - isGetPromotionResponse_Result() +type isGetProjectResponse_Result interface { + isGetProjectResponse_Result() } -type GetPromotionResponse_Promotion struct { - // promotion contains the Promotion resource in structured format. - Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3,oneof"` +type GetProjectResponse_Project struct { + // project contains the Project resource in structured format. + Project *v1alpha1.Project `protobuf:"bytes,1,opt,name=project,proto3,oneof"` } -type GetPromotionResponse_Raw struct { - // raw contains the Promotion resource in the requested raw format. +type GetProjectResponse_Raw struct { + // raw contains the Project resource in the requested raw format. Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` } -func (*GetPromotionResponse_Promotion) isGetPromotionResponse_Result() {} +func (*GetProjectResponse_Project) isGetProjectResponse_Result() {} -func (*GetPromotionResponse_Raw) isGetPromotionResponse_Result() {} +func (*GetProjectResponse_Raw) isGetProjectResponse_Result() {} -// WatchPromotionRequest is the request for watching a specific promotion via streaming. -type WatchPromotionRequest struct { +// ListProjectsRequest is the request for listing all projects with optional filtering and pagination. +type ListProjectsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the promotion. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the promotion to watch. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // page_size specifies the maximum number of projects to return per page. + PageSize *int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3,oneof" json:"page_size,omitempty"` + // page specifies which page of results to return. + Page *int32 `protobuf:"varint,2,opt,name=page,proto3,oneof" json:"page,omitempty"` + // filter specifies an optional filter expression for projects. + Filter *string `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` + // ui store starred projects uids, so it needs to filter it when looking at starred projects + Uid []string `protobuf:"bytes,4,rep,name=uid,proto3" json:"uid,omitempty"` + // When true, filter results to only projects where the authenticated user + // has been mapped to a ServiceAccount in the project's namespace. + Mine *bool `protobuf:"varint,5,opt,name=mine,proto3,oneof" json:"mine,omitempty"` } -func (x *WatchPromotionRequest) Reset() { - *x = WatchPromotionRequest{} +func (x *ListProjectsRequest) Reset() { + *x = ListProjectsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[57] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchPromotionRequest) String() string { +func (x *ListProjectsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchPromotionRequest) ProtoMessage() {} +func (*ListProjectsRequest) ProtoMessage() {} -func (x *WatchPromotionRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[57] +func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3558,54 +3534,75 @@ func (x *WatchPromotionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchPromotionRequest.ProtoReflect.Descriptor instead. -func (*WatchPromotionRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{57} +// Deprecated: Use ListProjectsRequest.ProtoReflect.Descriptor instead. +func (*ListProjectsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{58} } -func (x *WatchPromotionRequest) GetProject() string { - if x != nil { - return x.Project +func (x *ListProjectsRequest) GetPageSize() int32 { + if x != nil && x.PageSize != nil { + return *x.PageSize + } + return 0 +} + +func (x *ListProjectsRequest) GetPage() int32 { + if x != nil && x.Page != nil { + return *x.Page + } + return 0 +} + +func (x *ListProjectsRequest) GetFilter() string { + if x != nil && x.Filter != nil { + return *x.Filter } return "" } -func (x *WatchPromotionRequest) GetName() string { +func (x *ListProjectsRequest) GetUid() []string { if x != nil { - return x.Name + return x.Uid } - return "" + return nil } -// WatchPromotionResponse contains specific promotion change notifications. -type WatchPromotionResponse struct { +func (x *ListProjectsRequest) GetMine() bool { + if x != nil && x.Mine != nil { + return *x.Mine + } + return false +} + +// ListProjectsResponse contains the list of projects and pagination information. +type ListProjectsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // promotion is the Promotion resource that changed. - Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3" json:"promotion,omitempty"` - // type indicates the type of change (ADDED, MODIFIED, DELETED). - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + // projects is the list of Project resources matching the request criteria. + Projects []*v1alpha1.Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` + // total is the total number of projects available (across all pages). + Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` } -func (x *WatchPromotionResponse) Reset() { - *x = WatchPromotionResponse{} +func (x *ListProjectsResponse) Reset() { + *x = ListProjectsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[58] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchPromotionResponse) String() string { +func (x *ListProjectsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchPromotionResponse) ProtoMessage() {} +func (*ListProjectsResponse) ProtoMessage() {} -func (x *WatchPromotionResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[58] +func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3616,54 +3613,54 @@ func (x *WatchPromotionResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchPromotionResponse.ProtoReflect.Descriptor instead. -func (*WatchPromotionResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{58} +// Deprecated: Use ListProjectsResponse.ProtoReflect.Descriptor instead. +func (*ListProjectsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{59} } -func (x *WatchPromotionResponse) GetPromotion() *v1alpha1.Promotion { +func (x *ListProjectsResponse) GetProjects() []*v1alpha1.Project { if x != nil { - return x.Promotion + return x.Projects } return nil } -func (x *WatchPromotionResponse) GetType() string { +func (x *ListProjectsResponse) GetTotal() int32 { if x != nil { - return x.Type + return x.Total } - return "" + return 0 } -// AbortPromotionRequest is the request for canceling a running promotion process. -type AbortPromotionRequest struct { +// GetProjectConfigRequest is the request for retrieving project-level configuration settings. +type GetProjectConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the promotion. + // project is the name of the project to retrieve configuration for. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the promotion to abort. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the desired response format (structured object or raw YAML). + Format RawFormat `protobuf:"varint,2,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *AbortPromotionRequest) Reset() { - *x = AbortPromotionRequest{} +func (x *GetProjectConfigRequest) Reset() { + *x = GetProjectConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[59] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AbortPromotionRequest) String() string { +func (x *GetProjectConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AbortPromotionRequest) ProtoMessage() {} +func (*GetProjectConfigRequest) ProtoMessage() {} -func (x *AbortPromotionRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[59] +func (x *GetProjectConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3674,49 +3671,55 @@ func (x *AbortPromotionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AbortPromotionRequest.ProtoReflect.Descriptor instead. -func (*AbortPromotionRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{59} +// Deprecated: Use GetProjectConfigRequest.ProtoReflect.Descriptor instead. +func (*GetProjectConfigRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{60} } -func (x *AbortPromotionRequest) GetProject() string { +func (x *GetProjectConfigRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *AbortPromotionRequest) GetName() string { +func (x *GetProjectConfigRequest) GetFormat() RawFormat { if x != nil { - return x.Name + return x.Format } - return "" + return RawFormat_RAW_FORMAT_UNSPECIFIED } -// AbortPromotionResponse is the response after aborting a promotion. -type AbortPromotionResponse struct { +// GetProjectConfigResponse contains the requested project configuration. +type GetProjectConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Types that are assignable to Result: + // + // *GetProjectConfigResponse_ProjectConfig + // *GetProjectConfigResponse_Raw + Result isGetProjectConfigResponse_Result `protobuf_oneof:"result"` } -func (x *AbortPromotionResponse) Reset() { - *x = AbortPromotionResponse{} +func (x *GetProjectConfigResponse) Reset() { + *x = GetProjectConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[60] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AbortPromotionResponse) String() string { +func (x *GetProjectConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AbortPromotionResponse) ProtoMessage() {} +func (*GetProjectConfigResponse) ProtoMessage() {} -func (x *AbortPromotionResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[60] +func (x *GetProjectConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3727,69 +3730,62 @@ func (x *AbortPromotionResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AbortPromotionResponse.ProtoReflect.Descriptor instead. -func (*AbortPromotionResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{60} -} - -// DeleteProjectRequest is the request for deleting a project and all associated resources. -type DeleteProjectRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // name is the name of the project to delete. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +// Deprecated: Use GetProjectConfigResponse.ProtoReflect.Descriptor instead. +func (*GetProjectConfigResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{61} } -func (x *DeleteProjectRequest) Reset() { - *x = DeleteProjectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (m *GetProjectConfigResponse) GetResult() isGetProjectConfigResponse_Result { + if m != nil { + return m.Result } + return nil } -func (x *DeleteProjectRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *GetProjectConfigResponse) GetProjectConfig() *v1alpha1.ProjectConfig { + if x, ok := x.GetResult().(*GetProjectConfigResponse_ProjectConfig); ok { + return x.ProjectConfig + } + return nil } -func (*DeleteProjectRequest) ProtoMessage() {} - -func (x *DeleteProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *GetProjectConfigResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetProjectConfigResponse_Raw); ok { + return x.Raw } - return mi.MessageOf(x) + return nil } -// Deprecated: Use DeleteProjectRequest.ProtoReflect.Descriptor instead. -func (*DeleteProjectRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{61} +type isGetProjectConfigResponse_Result interface { + isGetProjectConfigResponse_Result() } -func (x *DeleteProjectRequest) GetName() string { - if x != nil { - return x.Name - } - return "" +type GetProjectConfigResponse_ProjectConfig struct { + // project_config is the structured ProjectConfig object. + ProjectConfig *v1alpha1.ProjectConfig `protobuf:"bytes,1,opt,name=project_config,json=projectConfig,proto3,oneof"` } -// DeleteProjectResponse is the response after deleting a project. -type DeleteProjectResponse struct { +type GetProjectConfigResponse_Raw struct { + // raw is the raw YAML representation of the project configuration. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetProjectConfigResponse_ProjectConfig) isGetProjectConfigResponse_Result() {} + +func (*GetProjectConfigResponse_Raw) isGetProjectConfigResponse_Result() {} + +// DeleteProjectConfigRequest is the request for removing project-level configuration. +type DeleteProjectConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // project is the name of the project to delete configuration for. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *DeleteProjectResponse) Reset() { - *x = DeleteProjectResponse{} +func (x *DeleteProjectConfigRequest) Reset() { + *x = DeleteProjectConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3797,13 +3793,13 @@ func (x *DeleteProjectResponse) Reset() { } } -func (x *DeleteProjectResponse) String() string { +func (x *DeleteProjectConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteProjectResponse) ProtoMessage() {} +func (*DeleteProjectConfigRequest) ProtoMessage() {} -func (x *DeleteProjectResponse) ProtoReflect() protoreflect.Message { +func (x *DeleteProjectConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3815,25 +3811,27 @@ func (x *DeleteProjectResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteProjectResponse.ProtoReflect.Descriptor instead. -func (*DeleteProjectResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteProjectConfigRequest.ProtoReflect.Descriptor instead. +func (*DeleteProjectConfigRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{62} } -// GetProjectRequest is the request for retrieving details of a specific project. -type GetProjectRequest struct { +func (x *DeleteProjectConfigRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +// DeleteProjectConfigResponse is the response after deleting project configuration. +type DeleteProjectConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // name is the name of the project to retrieve. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the format for raw resource representation. - Format RawFormat `protobuf:"varint,2,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *GetProjectRequest) Reset() { - *x = GetProjectRequest{} +func (x *DeleteProjectConfigResponse) Reset() { + *x = DeleteProjectConfigResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3841,13 +3839,13 @@ func (x *GetProjectRequest) Reset() { } } -func (x *GetProjectRequest) String() string { +func (x *DeleteProjectConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProjectRequest) ProtoMessage() {} +func (*DeleteProjectConfigResponse) ProtoMessage() {} -func (x *GetProjectRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteProjectConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3859,40 +3857,23 @@ func (x *GetProjectRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProjectRequest.ProtoReflect.Descriptor instead. -func (*GetProjectRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteProjectConfigResponse.ProtoReflect.Descriptor instead. +func (*DeleteProjectConfigResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{63} } -func (x *GetProjectRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *GetProjectRequest) GetFormat() RawFormat { - if x != nil { - return x.Format - } - return RawFormat_RAW_FORMAT_UNSPECIFIED -} - -// GetProjectResponse contains the requested project information. -type GetProjectResponse struct { +// WatchProjectConfigRequest is the request for streaming project configuration changes. +type WatchProjectConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Result: - // - // *GetProjectResponse_Project - // *GetProjectResponse_Raw - Result isGetProjectResponse_Result `protobuf_oneof:"result"` + // project is the name of the project to watch for configuration changes. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *GetProjectResponse) Reset() { - *x = GetProjectResponse{} +func (x *WatchProjectConfigRequest) Reset() { + *x = WatchProjectConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3900,13 +3881,13 @@ func (x *GetProjectResponse) Reset() { } } -func (x *GetProjectResponse) String() string { +func (x *WatchProjectConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProjectResponse) ProtoMessage() {} +func (*WatchProjectConfigRequest) ProtoMessage() {} -func (x *GetProjectResponse) ProtoReflect() protoreflect.Message { +func (x *WatchProjectConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3918,71 +3899,32 @@ func (x *GetProjectResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProjectResponse.ProtoReflect.Descriptor instead. -func (*GetProjectResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchProjectConfigRequest.ProtoReflect.Descriptor instead. +func (*WatchProjectConfigRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{64} } -func (m *GetProjectResponse) GetResult() isGetProjectResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetProjectResponse) GetProject() *v1alpha1.Project { - if x, ok := x.GetResult().(*GetProjectResponse_Project); ok { +func (x *WatchProjectConfigRequest) GetProject() string { + if x != nil { return x.Project } - return nil -} - -func (x *GetProjectResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetProjectResponse_Raw); ok { - return x.Raw - } - return nil -} - -type isGetProjectResponse_Result interface { - isGetProjectResponse_Result() -} - -type GetProjectResponse_Project struct { - // project contains the Project resource in structured format. - Project *v1alpha1.Project `protobuf:"bytes,1,opt,name=project,proto3,oneof"` -} - -type GetProjectResponse_Raw struct { - // raw contains the Project resource in the requested raw format. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` + return "" } -func (*GetProjectResponse_Project) isGetProjectResponse_Result() {} - -func (*GetProjectResponse_Raw) isGetProjectResponse_Result() {} - -// ListProjectsRequest is the request for listing all projects with optional filtering and pagination. -type ListProjectsRequest struct { +// WatchProjectConfigResponse provides streaming updates for project configuration changes. +type WatchProjectConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // page_size specifies the maximum number of projects to return per page. - PageSize *int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3,oneof" json:"page_size,omitempty"` - // page specifies which page of results to return. - Page *int32 `protobuf:"varint,2,opt,name=page,proto3,oneof" json:"page,omitempty"` - // filter specifies an optional filter expression for projects. - Filter *string `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` - // ui store starred projects uids, so it needs to filter it when looking at starred projects - Uid []string `protobuf:"bytes,4,rep,name=uid,proto3" json:"uid,omitempty"` - // When true, filter results to only projects where the authenticated user - // has been mapped to a ServiceAccount in the project's namespace. - Mine *bool `protobuf:"varint,5,opt,name=mine,proto3,oneof" json:"mine,omitempty"` + // project_config is the updated ProjectConfig object. + ProjectConfig *v1alpha1.ProjectConfig `protobuf:"bytes,1,opt,name=project_config,json=projectConfig,proto3" json:"project_config,omitempty"` + // type indicates the type of change (ADDED / MODIFIED / DELETED). + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (x *ListProjectsRequest) Reset() { - *x = ListProjectsRequest{} +func (x *WatchProjectConfigResponse) Reset() { + *x = WatchProjectConfigResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3990,13 +3932,13 @@ func (x *ListProjectsRequest) Reset() { } } -func (x *ListProjectsRequest) String() string { +func (x *WatchProjectConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListProjectsRequest) ProtoMessage() {} +func (*WatchProjectConfigResponse) ProtoMessage() {} -func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { +func (x *WatchProjectConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4008,60 +3950,43 @@ func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListProjectsRequest.ProtoReflect.Descriptor instead. -func (*ListProjectsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use WatchProjectConfigResponse.ProtoReflect.Descriptor instead. +func (*WatchProjectConfigResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{65} } -func (x *ListProjectsRequest) GetPageSize() int32 { - if x != nil && x.PageSize != nil { - return *x.PageSize - } - return 0 -} - -func (x *ListProjectsRequest) GetPage() int32 { - if x != nil && x.Page != nil { - return *x.Page - } - return 0 -} - -func (x *ListProjectsRequest) GetFilter() string { - if x != nil && x.Filter != nil { - return *x.Filter - } - return "" -} - -func (x *ListProjectsRequest) GetUid() []string { +func (x *WatchProjectConfigResponse) GetProjectConfig() *v1alpha1.ProjectConfig { if x != nil { - return x.Uid + return x.ProjectConfig } return nil } -func (x *ListProjectsRequest) GetMine() bool { - if x != nil && x.Mine != nil { - return *x.Mine +func (x *WatchProjectConfigResponse) GetType() string { + if x != nil { + return x.Type } - return false + return "" } -// ListProjectsResponse contains the list of projects and pagination information. -type ListProjectsResponse struct { +// ApproveFreightRequest is the request for approving freight for promotion to a stage. +type ApproveFreightRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // projects is the list of Project resources matching the request criteria. - Projects []*v1alpha1.Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` - // total is the total number of projects available (across all pages). - Total int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` + // project is the name of the project containing the freight. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the freight to approve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // alias is the alias of the freight to approve. + Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` + // stage is the name of the stage for which to approve the freight. + Stage string `protobuf:"bytes,4,opt,name=stage,proto3" json:"stage,omitempty"` } -func (x *ListProjectsResponse) Reset() { - *x = ListProjectsResponse{} +func (x *ApproveFreightRequest) Reset() { + *x = ApproveFreightRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4069,13 +3994,13 @@ func (x *ListProjectsResponse) Reset() { } } -func (x *ListProjectsResponse) String() string { +func (x *ApproveFreightRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListProjectsResponse) ProtoMessage() {} +func (*ApproveFreightRequest) ProtoMessage() {} -func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { +func (x *ApproveFreightRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4087,39 +4012,48 @@ func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListProjectsResponse.ProtoReflect.Descriptor instead. -func (*ListProjectsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ApproveFreightRequest.ProtoReflect.Descriptor instead. +func (*ApproveFreightRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{66} } -func (x *ListProjectsResponse) GetProjects() []*v1alpha1.Project { +func (x *ApproveFreightRequest) GetProject() string { if x != nil { - return x.Projects + return x.Project } - return nil + return "" } -func (x *ListProjectsResponse) GetTotal() int32 { +func (x *ApproveFreightRequest) GetName() string { if x != nil { - return x.Total + return x.Name } - return 0 + return "" } -// GetProjectConfigRequest is the request for retrieving project-level configuration settings. -type GetProjectConfigRequest struct { - state protoimpl.MessageState +func (x *ApproveFreightRequest) GetAlias() string { + if x != nil { + return x.Alias + } + return "" +} + +func (x *ApproveFreightRequest) GetStage() string { + if x != nil { + return x.Stage + } + return "" +} + +// ApproveFreightResponse is the response after approving freight. +type ApproveFreightResponse struct { + state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // project is the name of the project to retrieve configuration for. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // format specifies the desired response format (structured object or raw YAML). - Format RawFormat `protobuf:"varint,2,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *GetProjectConfigRequest) Reset() { - *x = GetProjectConfigRequest{} +func (x *ApproveFreightResponse) Reset() { + *x = ApproveFreightResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4127,13 +4061,13 @@ func (x *GetProjectConfigRequest) Reset() { } } -func (x *GetProjectConfigRequest) String() string { +func (x *ApproveFreightResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProjectConfigRequest) ProtoMessage() {} +func (*ApproveFreightResponse) ProtoMessage() {} -func (x *GetProjectConfigRequest) ProtoReflect() protoreflect.Message { +func (x *ApproveFreightResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4145,40 +4079,27 @@ func (x *GetProjectConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProjectConfigRequest.ProtoReflect.Descriptor instead. -func (*GetProjectConfigRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ApproveFreightResponse.ProtoReflect.Descriptor instead. +func (*ApproveFreightResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{67} } -func (x *GetProjectConfigRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *GetProjectConfigRequest) GetFormat() RawFormat { - if x != nil { - return x.Format - } - return RawFormat_RAW_FORMAT_UNSPECIFIED -} - -// GetProjectConfigResponse contains the requested project configuration. -type GetProjectConfigResponse struct { +// DeleteFreightRequest is the request for deleting freight. +type DeleteFreightRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Result: - // - // *GetProjectConfigResponse_ProjectConfig - // *GetProjectConfigResponse_Raw - Result isGetProjectConfigResponse_Result `protobuf_oneof:"result"` + // project is the name of the project containing the freight. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the freight to delete. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // alias is the alias of the freight to delete. + Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` } -func (x *GetProjectConfigResponse) Reset() { - *x = GetProjectConfigResponse{} +func (x *DeleteFreightRequest) Reset() { + *x = DeleteFreightRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4186,13 +4107,13 @@ func (x *GetProjectConfigResponse) Reset() { } } -func (x *GetProjectConfigResponse) String() string { +func (x *DeleteFreightRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProjectConfigResponse) ProtoMessage() {} +func (*DeleteFreightRequest) ProtoMessage() {} -func (x *GetProjectConfigResponse) ProtoReflect() protoreflect.Message { +func (x *DeleteFreightRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4204,62 +4125,41 @@ func (x *GetProjectConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProjectConfigResponse.ProtoReflect.Descriptor instead. -func (*GetProjectConfigResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteFreightRequest.ProtoReflect.Descriptor instead. +func (*DeleteFreightRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{68} } -func (m *GetProjectConfigResponse) GetResult() isGetProjectConfigResponse_Result { - if m != nil { - return m.Result +func (x *DeleteFreightRequest) GetProject() string { + if x != nil { + return x.Project } - return nil + return "" } -func (x *GetProjectConfigResponse) GetProjectConfig() *v1alpha1.ProjectConfig { - if x, ok := x.GetResult().(*GetProjectConfigResponse_ProjectConfig); ok { - return x.ProjectConfig +func (x *DeleteFreightRequest) GetName() string { + if x != nil { + return x.Name } - return nil + return "" } -func (x *GetProjectConfigResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetProjectConfigResponse_Raw); ok { - return x.Raw +func (x *DeleteFreightRequest) GetAlias() string { + if x != nil { + return x.Alias } - return nil -} - -type isGetProjectConfigResponse_Result interface { - isGetProjectConfigResponse_Result() -} - -type GetProjectConfigResponse_ProjectConfig struct { - // project_config is the structured ProjectConfig object. - ProjectConfig *v1alpha1.ProjectConfig `protobuf:"bytes,1,opt,name=project_config,json=projectConfig,proto3,oneof"` -} - -type GetProjectConfigResponse_Raw struct { - // raw is the raw YAML representation of the project configuration. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` + return "" } -func (*GetProjectConfigResponse_ProjectConfig) isGetProjectConfigResponse_Result() {} - -func (*GetProjectConfigResponse_Raw) isGetProjectConfigResponse_Result() {} - -// DeleteProjectConfigRequest is the request for removing project-level configuration. -type DeleteProjectConfigRequest struct { +// DeleteFreightResponse is the response after deleting freight. +type DeleteFreightResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // project is the name of the project to delete configuration for. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *DeleteProjectConfigRequest) Reset() { - *x = DeleteProjectConfigRequest{} +func (x *DeleteFreightResponse) Reset() { + *x = DeleteFreightResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4267,13 +4167,13 @@ func (x *DeleteProjectConfigRequest) Reset() { } } -func (x *DeleteProjectConfigRequest) String() string { +func (x *DeleteFreightResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteProjectConfigRequest) ProtoMessage() {} +func (*DeleteFreightResponse) ProtoMessage() {} -func (x *DeleteProjectConfigRequest) ProtoReflect() protoreflect.Message { +func (x *DeleteFreightResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4285,27 +4185,29 @@ func (x *DeleteProjectConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteProjectConfigRequest.ProtoReflect.Descriptor instead. -func (*DeleteProjectConfigRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteFreightResponse.ProtoReflect.Descriptor instead. +func (*DeleteFreightResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{69} } -func (x *DeleteProjectConfigRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -// DeleteProjectConfigResponse is the response after deleting project configuration. -type DeleteProjectConfigResponse struct { +// GetFreightRequest is the request for retrieving details of specific freight. +type GetFreightRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // project is the name of the project containing the freight. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the freight to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // alias is the alias of the freight to retrieve. + Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` + // format specifies the format for raw resource representation. + Format RawFormat `protobuf:"varint,4,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *DeleteProjectConfigResponse) Reset() { - *x = DeleteProjectConfigResponse{} +func (x *GetFreightRequest) Reset() { + *x = GetFreightRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4313,13 +4215,13 @@ func (x *DeleteProjectConfigResponse) Reset() { } } -func (x *DeleteProjectConfigResponse) String() string { +func (x *GetFreightRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteProjectConfigResponse) ProtoMessage() {} +func (*GetFreightRequest) ProtoMessage() {} -func (x *DeleteProjectConfigResponse) ProtoReflect() protoreflect.Message { +func (x *GetFreightRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4331,89 +4233,69 @@ func (x *DeleteProjectConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteProjectConfigResponse.ProtoReflect.Descriptor instead. -func (*DeleteProjectConfigResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetFreightRequest.ProtoReflect.Descriptor instead. +func (*GetFreightRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{70} } -// WatchProjectConfigRequest is the request for streaming project configuration changes. -type WatchProjectConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // project is the name of the project to watch for configuration changes. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` -} - -func (x *WatchProjectConfigRequest) Reset() { - *x = WatchProjectConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[71] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *GetFreightRequest) GetProject() string { + if x != nil { + return x.Project } + return "" } -func (x *WatchProjectConfigRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WatchProjectConfigRequest) ProtoMessage() {} - -func (x *WatchProjectConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[71] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *GetFreightRequest) GetName() string { + if x != nil { + return x.Name } - return mi.MessageOf(x) + return "" } -// Deprecated: Use WatchProjectConfigRequest.ProtoReflect.Descriptor instead. -func (*WatchProjectConfigRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{71} +func (x *GetFreightRequest) GetAlias() string { + if x != nil { + return x.Alias + } + return "" } -func (x *WatchProjectConfigRequest) GetProject() string { +func (x *GetFreightRequest) GetFormat() RawFormat { if x != nil { - return x.Project + return x.Format } - return "" + return RawFormat_RAW_FORMAT_UNSPECIFIED } -// WatchProjectConfigResponse provides streaming updates for project configuration changes. -type WatchProjectConfigResponse struct { +// GetFreightResponse contains the requested freight information. +type GetFreightResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project_config is the updated ProjectConfig object. - ProjectConfig *v1alpha1.ProjectConfig `protobuf:"bytes,1,opt,name=project_config,json=projectConfig,proto3" json:"project_config,omitempty"` - // type indicates the type of change (ADDED / MODIFIED / DELETED). - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + // Types that are assignable to Result: + // + // *GetFreightResponse_Freight + // *GetFreightResponse_Raw + Result isGetFreightResponse_Result `protobuf_oneof:"result"` } -func (x *WatchProjectConfigResponse) Reset() { - *x = WatchProjectConfigResponse{} +func (x *GetFreightResponse) Reset() { + *x = GetFreightResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[72] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchProjectConfigResponse) String() string { +func (x *GetFreightResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchProjectConfigResponse) ProtoMessage() {} +func (*GetFreightResponse) ProtoMessage() {} -func (x *WatchProjectConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[72] +func (x *GetFreightResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4424,58 +4306,81 @@ func (x *WatchProjectConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchProjectConfigResponse.ProtoReflect.Descriptor instead. -func (*WatchProjectConfigResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{72} +// Deprecated: Use GetFreightResponse.ProtoReflect.Descriptor instead. +func (*GetFreightResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{71} } -func (x *WatchProjectConfigResponse) GetProjectConfig() *v1alpha1.ProjectConfig { - if x != nil { - return x.ProjectConfig +func (m *GetFreightResponse) GetResult() isGetFreightResponse_Result { + if m != nil { + return m.Result } return nil } -func (x *WatchProjectConfigResponse) GetType() string { - if x != nil { - return x.Type +func (x *GetFreightResponse) GetFreight() *v1alpha1.Freight { + if x, ok := x.GetResult().(*GetFreightResponse_Freight); ok { + return x.Freight } - return "" + return nil } -// ApproveFreightRequest is the request for approving freight for promotion to a stage. -type ApproveFreightRequest struct { +func (x *GetFreightResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetFreightResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetFreightResponse_Result interface { + isGetFreightResponse_Result() +} + +type GetFreightResponse_Freight struct { + // freight contains the Freight resource in structured format. + Freight *v1alpha1.Freight `protobuf:"bytes,1,opt,name=freight,proto3,oneof"` +} + +type GetFreightResponse_Raw struct { + // raw contains the Freight resource in the requested raw format. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetFreightResponse_Freight) isGetFreightResponse_Result() {} + +func (*GetFreightResponse_Raw) isGetFreightResponse_Result() {} + +// WatchFreightRequest is the request for watching freight changes via streaming. +type WatchFreightRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the freight. + // project is the name of the project whose freight should be watched. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the freight to approve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // alias is the alias of the freight to approve. - Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` - // stage is the name of the stage for which to approve the freight. - Stage string `protobuf:"bytes,4,opt,name=stage,proto3" json:"stage,omitempty"` + // origins is an optional list of Warehouse names to filter Freight by. + // When specified, only events for Freight that originated from at least one + // of the named Warehouses are streamed. + Origins []string `protobuf:"bytes,2,rep,name=origins,proto3" json:"origins,omitempty"` } -func (x *ApproveFreightRequest) Reset() { - *x = ApproveFreightRequest{} +func (x *WatchFreightRequest) Reset() { + *x = WatchFreightRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[73] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ApproveFreightRequest) String() string { +func (x *WatchFreightRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApproveFreightRequest) ProtoMessage() {} +func (*WatchFreightRequest) ProtoMessage() {} -func (x *ApproveFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[73] +func (x *WatchFreightRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4486,63 +4391,54 @@ func (x *ApproveFreightRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApproveFreightRequest.ProtoReflect.Descriptor instead. -func (*ApproveFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{73} +// Deprecated: Use WatchFreightRequest.ProtoReflect.Descriptor instead. +func (*WatchFreightRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{72} } -func (x *ApproveFreightRequest) GetProject() string { +func (x *WatchFreightRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *ApproveFreightRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ApproveFreightRequest) GetAlias() string { - if x != nil { - return x.Alias - } - return "" -} - -func (x *ApproveFreightRequest) GetStage() string { +func (x *WatchFreightRequest) GetOrigins() []string { if x != nil { - return x.Stage + return x.Origins } - return "" + return nil } -// ApproveFreightResponse is the response after approving freight. -type ApproveFreightResponse struct { +// WatchFreightResponse contains freight change notifications. +type WatchFreightResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // freight is the Freight resource that changed. + Freight *v1alpha1.Freight `protobuf:"bytes,1,opt,name=freight,proto3" json:"freight,omitempty"` + // type indicates the type of change (ADDED, MODIFIED, DELETED). + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // ADDED / MODIFIED / DELETED } -func (x *ApproveFreightResponse) Reset() { - *x = ApproveFreightResponse{} +func (x *WatchFreightResponse) Reset() { + *x = WatchFreightResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[74] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ApproveFreightResponse) String() string { +func (x *WatchFreightResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ApproveFreightResponse) ProtoMessage() {} +func (*WatchFreightResponse) ProtoMessage() {} -func (x *ApproveFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[74] +func (x *WatchFreightResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4553,42 +4449,58 @@ func (x *ApproveFreightResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ApproveFreightResponse.ProtoReflect.Descriptor instead. -func (*ApproveFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{74} +// Deprecated: Use WatchFreightResponse.ProtoReflect.Descriptor instead. +func (*WatchFreightResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{73} } -// DeleteFreightRequest is the request for deleting freight. -type DeleteFreightRequest struct { +func (x *WatchFreightResponse) GetFreight() *v1alpha1.Freight { + if x != nil { + return x.Freight + } + return nil +} + +func (x *WatchFreightResponse) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// PromoteToStageRequest is the request for promoting freight to a specific stage. +type PromoteToStageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the freight. + // project is the name of the project containing the stage and freight. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the freight to delete. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // alias is the alias of the freight to delete. - Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` + // stage is the name of the stage to promote freight to. + Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` + // freight is the name of the freight to promote. + Freight string `protobuf:"bytes,3,opt,name=freight,proto3" json:"freight,omitempty"` + // freight_alias is the alias of the freight to promote. + FreightAlias string `protobuf:"bytes,4,opt,name=freight_alias,json=freightAlias,proto3" json:"freight_alias,omitempty"` } -func (x *DeleteFreightRequest) Reset() { - *x = DeleteFreightRequest{} +func (x *PromoteToStageRequest) Reset() { + *x = PromoteToStageRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[75] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteFreightRequest) String() string { +func (x *PromoteToStageRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteFreightRequest) ProtoMessage() {} +func (*PromoteToStageRequest) ProtoMessage() {} -func (x *DeleteFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[75] +func (x *PromoteToStageRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4599,56 +4511,66 @@ func (x *DeleteFreightRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteFreightRequest.ProtoReflect.Descriptor instead. -func (*DeleteFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{75} +// Deprecated: Use PromoteToStageRequest.ProtoReflect.Descriptor instead. +func (*PromoteToStageRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{74} } -func (x *DeleteFreightRequest) GetProject() string { +func (x *PromoteToStageRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *DeleteFreightRequest) GetName() string { +func (x *PromoteToStageRequest) GetStage() string { if x != nil { - return x.Name + return x.Stage } return "" } -func (x *DeleteFreightRequest) GetAlias() string { +func (x *PromoteToStageRequest) GetFreight() string { if x != nil { - return x.Alias + return x.Freight } return "" } -// DeleteFreightResponse is the response after deleting freight. -type DeleteFreightResponse struct { +func (x *PromoteToStageRequest) GetFreightAlias() string { + if x != nil { + return x.FreightAlias + } + return "" +} + +// PromoteToStageResponse contains the promotion created for the freight promotion. +type PromoteToStageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // promotion is the Promotion resource created for this freight promotion. + Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3" json:"promotion,omitempty"` } -func (x *DeleteFreightResponse) Reset() { - *x = DeleteFreightResponse{} +func (x *PromoteToStageResponse) Reset() { + *x = PromoteToStageResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[76] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteFreightResponse) String() string { +func (x *PromoteToStageResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteFreightResponse) ProtoMessage() {} +func (*PromoteToStageResponse) ProtoMessage() {} -func (x *DeleteFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[76] +func (x *PromoteToStageResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4659,44 +4581,51 @@ func (x *DeleteFreightResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteFreightResponse.ProtoReflect.Descriptor instead. -func (*DeleteFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{76} +// Deprecated: Use PromoteToStageResponse.ProtoReflect.Descriptor instead. +func (*PromoteToStageResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{75} } -// GetFreightRequest is the request for retrieving details of specific freight. -type GetFreightRequest struct { +func (x *PromoteToStageResponse) GetPromotion() *v1alpha1.Promotion { + if x != nil { + return x.Promotion + } + return nil +} + +// PromoteDownstreamRequest is the request for automatically promoting freight to downstream stages. +type PromoteDownstreamRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the freight. + // project is the name of the project containing the stage and freight. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the freight to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // alias is the alias of the freight to retrieve. - Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` - // format specifies the format for raw resource representation. - Format RawFormat `protobuf:"varint,4,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` + // stage is the name of the source stage from which to promote downstream. + Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` + // freight is the name of the freight to promote downstream. + Freight string `protobuf:"bytes,3,opt,name=freight,proto3" json:"freight,omitempty"` + // freight_alias is the alias of the freight to promote downstream. + FreightAlias string `protobuf:"bytes,4,opt,name=freight_alias,json=freightAlias,proto3" json:"freight_alias,omitempty"` } -func (x *GetFreightRequest) Reset() { - *x = GetFreightRequest{} +func (x *PromoteDownstreamRequest) Reset() { + *x = PromoteDownstreamRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[77] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetFreightRequest) String() string { +func (x *PromoteDownstreamRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetFreightRequest) ProtoMessage() {} +func (*PromoteDownstreamRequest) ProtoMessage() {} -func (x *GetFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[77] +func (x *PromoteDownstreamRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4707,69 +4636,66 @@ func (x *GetFreightRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetFreightRequest.ProtoReflect.Descriptor instead. -func (*GetFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{77} +// Deprecated: Use PromoteDownstreamRequest.ProtoReflect.Descriptor instead. +func (*PromoteDownstreamRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{76} } -func (x *GetFreightRequest) GetProject() string { +func (x *PromoteDownstreamRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *GetFreightRequest) GetName() string { +func (x *PromoteDownstreamRequest) GetStage() string { if x != nil { - return x.Name + return x.Stage } return "" } -func (x *GetFreightRequest) GetAlias() string { +func (x *PromoteDownstreamRequest) GetFreight() string { if x != nil { - return x.Alias + return x.Freight } return "" } -func (x *GetFreightRequest) GetFormat() RawFormat { +func (x *PromoteDownstreamRequest) GetFreightAlias() string { if x != nil { - return x.Format + return x.FreightAlias } - return RawFormat_RAW_FORMAT_UNSPECIFIED + return "" } -// GetFreightResponse contains the requested freight information. -type GetFreightResponse struct { +// PromoteDownstreamResponse contains the promotions created for downstream freight promotions. +type PromoteDownstreamResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Result: - // - // *GetFreightResponse_Freight - // *GetFreightResponse_Raw - Result isGetFreightResponse_Result `protobuf_oneof:"result"` + // promotions are the Promotion resources created for downstream freight promotions. + Promotions []*v1alpha1.Promotion `protobuf:"bytes,1,rep,name=promotions,proto3" json:"promotions,omitempty"` } -func (x *GetFreightResponse) Reset() { - *x = GetFreightResponse{} +func (x *PromoteDownstreamResponse) Reset() { + *x = PromoteDownstreamResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[78] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetFreightResponse) String() string { +func (x *PromoteDownstreamResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetFreightResponse) ProtoMessage() {} +func (*PromoteDownstreamResponse) ProtoMessage() {} -func (x *GetFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[78] +func (x *PromoteDownstreamResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4780,81 +4706,57 @@ func (x *GetFreightResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetFreightResponse.ProtoReflect.Descriptor instead. -func (*GetFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{78} -} - -func (m *GetFreightResponse) GetResult() isGetFreightResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetFreightResponse) GetFreight() *v1alpha1.Freight { - if x, ok := x.GetResult().(*GetFreightResponse_Freight); ok { - return x.Freight - } - return nil +// Deprecated: Use PromoteDownstreamResponse.ProtoReflect.Descriptor instead. +func (*PromoteDownstreamResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{77} } -func (x *GetFreightResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetFreightResponse_Raw); ok { - return x.Raw +func (x *PromoteDownstreamResponse) GetPromotions() []*v1alpha1.Promotion { + if x != nil { + return x.Promotions } return nil } -type isGetFreightResponse_Result interface { - isGetFreightResponse_Result() -} - -type GetFreightResponse_Freight struct { - // freight contains the Freight resource in structured format. - Freight *v1alpha1.Freight `protobuf:"bytes,1,opt,name=freight,proto3,oneof"` -} - -type GetFreightResponse_Raw struct { - // raw contains the Freight resource in the requested raw format. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` -} - -func (*GetFreightResponse_Freight) isGetFreightResponse_Result() {} - -func (*GetFreightResponse_Raw) isGetFreightResponse_Result() {} - -// WatchFreightRequest is the request for watching freight changes via streaming. -type WatchFreightRequest struct { +// QueryFreightRequest is the request for searching freight based on specified criteria. +type QueryFreightRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose freight should be watched. + // project is the name of the project to search for freight. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // origins is an optional list of Warehouse names to filter Freight by. - // When specified, only events for Freight that originated from at least one - // of the named Warehouses are streamed. - Origins []string `protobuf:"bytes,2,rep,name=origins,proto3" json:"origins,omitempty"` + // stage is the name of the stage to filter freight by. + Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` + // group_by specifies how to group the freight results. + GroupBy string `protobuf:"bytes,3,opt,name=group_by,json=groupBy,proto3" json:"group_by,omitempty"` + // group specifies which group to return results for. + Group string `protobuf:"bytes,4,opt,name=group,proto3" json:"group,omitempty"` + // order_by specifies how to order the freight results. + OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + // reverse indicates whether to reverse the order of results. + Reverse bool `protobuf:"varint,6,opt,name=reverse,proto3" json:"reverse,omitempty"` + // origins filters freight by their origins (e.g., warehouse names). + Origins []string `protobuf:"bytes,7,rep,name=origins,proto3" json:"origins,omitempty"` } -func (x *WatchFreightRequest) Reset() { - *x = WatchFreightRequest{} +func (x *QueryFreightRequest) Reset() { + *x = QueryFreightRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[79] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchFreightRequest) String() string { +func (x *QueryFreightRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchFreightRequest) ProtoMessage() {} +func (*QueryFreightRequest) ProtoMessage() {} -func (x *WatchFreightRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[79] +func (x *QueryFreightRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4865,54 +4767,87 @@ func (x *WatchFreightRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchFreightRequest.ProtoReflect.Descriptor instead. -func (*WatchFreightRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{79} +// Deprecated: Use QueryFreightRequest.ProtoReflect.Descriptor instead. +func (*QueryFreightRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{78} } -func (x *WatchFreightRequest) GetProject() string { +func (x *QueryFreightRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *WatchFreightRequest) GetOrigins() []string { +func (x *QueryFreightRequest) GetStage() string { + if x != nil { + return x.Stage + } + return "" +} + +func (x *QueryFreightRequest) GetGroupBy() string { + if x != nil { + return x.GroupBy + } + return "" +} + +func (x *QueryFreightRequest) GetGroup() string { + if x != nil { + return x.Group + } + return "" +} + +func (x *QueryFreightRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" +} + +func (x *QueryFreightRequest) GetReverse() bool { + if x != nil { + return x.Reverse + } + return false +} + +func (x *QueryFreightRequest) GetOrigins() []string { if x != nil { return x.Origins } return nil } -// WatchFreightResponse contains freight change notifications. -type WatchFreightResponse struct { +// QueryFreightResponse contains the grouped freight search results. +type QueryFreightResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // freight is the Freight resource that changed. - Freight *v1alpha1.Freight `protobuf:"bytes,1,opt,name=freight,proto3" json:"freight,omitempty"` - // type indicates the type of change (ADDED, MODIFIED, DELETED). - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // ADDED / MODIFIED / DELETED + // groups maps group names to their corresponding freight lists. + Groups map[string]*FreightList `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *WatchFreightResponse) Reset() { - *x = WatchFreightResponse{} +func (x *QueryFreightResponse) Reset() { + *x = QueryFreightResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[80] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchFreightResponse) String() string { +func (x *QueryFreightResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchFreightResponse) ProtoMessage() {} +func (*QueryFreightResponse) ProtoMessage() {} -func (x *WatchFreightResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[80] +func (x *QueryFreightResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4923,58 +4858,45 @@ func (x *WatchFreightResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchFreightResponse.ProtoReflect.Descriptor instead. -func (*WatchFreightResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{80} +// Deprecated: Use QueryFreightResponse.ProtoReflect.Descriptor instead. +func (*QueryFreightResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{79} } -func (x *WatchFreightResponse) GetFreight() *v1alpha1.Freight { +func (x *QueryFreightResponse) GetGroups() map[string]*FreightList { if x != nil { - return x.Freight + return x.Groups } return nil } -func (x *WatchFreightResponse) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -// PromoteToStageRequest is the request for promoting freight to a specific stage. -type PromoteToStageRequest struct { +// FreightList contains a list of freight resources. +type FreightList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the stage and freight. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is the name of the stage to promote freight to. - Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` - // freight is the name of the freight to promote. - Freight string `protobuf:"bytes,3,opt,name=freight,proto3" json:"freight,omitempty"` - // freight_alias is the alias of the freight to promote. - FreightAlias string `protobuf:"bytes,4,opt,name=freight_alias,json=freightAlias,proto3" json:"freight_alias,omitempty"` + // freight is the list of Freight resources. + Freight []*v1alpha1.Freight `protobuf:"bytes,1,rep,name=freight,proto3" json:"freight,omitempty"` } -func (x *PromoteToStageRequest) Reset() { - *x = PromoteToStageRequest{} +func (x *FreightList) Reset() { + *x = FreightList{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[81] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PromoteToStageRequest) String() string { +func (x *FreightList) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PromoteToStageRequest) ProtoMessage() {} +func (*FreightList) ProtoMessage() {} -func (x *PromoteToStageRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[81] +func (x *FreightList) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4985,51 +4907,103 @@ func (x *PromoteToStageRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PromoteToStageRequest.ProtoReflect.Descriptor instead. -func (*PromoteToStageRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{81} +// Deprecated: Use FreightList.ProtoReflect.Descriptor instead. +func (*FreightList) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{80} } -func (x *PromoteToStageRequest) GetProject() string { +func (x *FreightList) GetFreight() []*v1alpha1.Freight { + if x != nil { + return x.Freight + } + return nil +} + +// UpdateFreightAliasRequest is the request for updating a freight's alias. +type UpdateFreightAliasRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // project is the name of the project containing the freight. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the freight whose alias should be updated. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // old_alias is the current alias of the freight. + OldAlias string `protobuf:"bytes,3,opt,name=old_alias,json=oldAlias,proto3" json:"old_alias,omitempty"` + // new_alias is the new alias to assign to the freight. + NewAlias string `protobuf:"bytes,4,opt,name=new_alias,json=newAlias,proto3" json:"new_alias,omitempty"` +} + +func (x *UpdateFreightAliasRequest) Reset() { + *x = UpdateFreightAliasRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateFreightAliasRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateFreightAliasRequest) ProtoMessage() {} + +func (x *UpdateFreightAliasRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[81] + 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 UpdateFreightAliasRequest.ProtoReflect.Descriptor instead. +func (*UpdateFreightAliasRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{81} +} + +func (x *UpdateFreightAliasRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *PromoteToStageRequest) GetStage() string { +func (x *UpdateFreightAliasRequest) GetName() string { if x != nil { - return x.Stage + return x.Name } return "" } -func (x *PromoteToStageRequest) GetFreight() string { +func (x *UpdateFreightAliasRequest) GetOldAlias() string { if x != nil { - return x.Freight + return x.OldAlias } return "" } -func (x *PromoteToStageRequest) GetFreightAlias() string { +func (x *UpdateFreightAliasRequest) GetNewAlias() string { if x != nil { - return x.FreightAlias + return x.NewAlias } return "" } -// PromoteToStageResponse contains the promotion created for the freight promotion. -type PromoteToStageResponse struct { +// UpdateFreightAliasResponse is the response after updating a freight's alias. +type UpdateFreightAliasResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // promotion is the Promotion resource created for this freight promotion. - Promotion *v1alpha1.Promotion `protobuf:"bytes,1,opt,name=promotion,proto3" json:"promotion,omitempty"` } -func (x *PromoteToStageResponse) Reset() { - *x = PromoteToStageResponse{} +func (x *UpdateFreightAliasResponse) Reset() { + *x = UpdateFreightAliasResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5037,13 +5011,13 @@ func (x *PromoteToStageResponse) Reset() { } } -func (x *PromoteToStageResponse) String() string { +func (x *UpdateFreightAliasResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PromoteToStageResponse) ProtoMessage() {} +func (*UpdateFreightAliasResponse) ProtoMessage() {} -func (x *PromoteToStageResponse) ProtoReflect() protoreflect.Message { +func (x *UpdateFreightAliasResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5055,36 +5029,25 @@ func (x *PromoteToStageResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PromoteToStageResponse.ProtoReflect.Descriptor instead. -func (*PromoteToStageResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateFreightAliasResponse.ProtoReflect.Descriptor instead. +func (*UpdateFreightAliasResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{82} } -func (x *PromoteToStageResponse) GetPromotion() *v1alpha1.Promotion { - if x != nil { - return x.Promotion - } - return nil -} - -// PromoteDownstreamRequest is the request for automatically promoting freight to downstream stages. -type PromoteDownstreamRequest struct { +// ReverifyRequest is the request for triggering re-execution of verification processes for a stage. +type ReverifyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the stage and freight. + // project is the name of the project containing the stage. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is the name of the source stage from which to promote downstream. + // stage is the name of the stage to reverify. Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` - // freight is the name of the freight to promote downstream. - Freight string `protobuf:"bytes,3,opt,name=freight,proto3" json:"freight,omitempty"` - // freight_alias is the alias of the freight to promote downstream. - FreightAlias string `protobuf:"bytes,4,opt,name=freight_alias,json=freightAlias,proto3" json:"freight_alias,omitempty"` } -func (x *PromoteDownstreamRequest) Reset() { - *x = PromoteDownstreamRequest{} +func (x *ReverifyRequest) Reset() { + *x = ReverifyRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5092,13 +5055,13 @@ func (x *PromoteDownstreamRequest) Reset() { } } -func (x *PromoteDownstreamRequest) String() string { +func (x *ReverifyRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PromoteDownstreamRequest) ProtoMessage() {} +func (*ReverifyRequest) ProtoMessage() {} -func (x *PromoteDownstreamRequest) ProtoReflect() protoreflect.Message { +func (x *ReverifyRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5110,51 +5073,34 @@ func (x *PromoteDownstreamRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PromoteDownstreamRequest.ProtoReflect.Descriptor instead. -func (*PromoteDownstreamRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ReverifyRequest.ProtoReflect.Descriptor instead. +func (*ReverifyRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{83} } -func (x *PromoteDownstreamRequest) GetProject() string { +func (x *ReverifyRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *PromoteDownstreamRequest) GetStage() string { +func (x *ReverifyRequest) GetStage() string { if x != nil { return x.Stage } return "" } -func (x *PromoteDownstreamRequest) GetFreight() string { - if x != nil { - return x.Freight - } - return "" -} - -func (x *PromoteDownstreamRequest) GetFreightAlias() string { - if x != nil { - return x.FreightAlias - } - return "" -} - -// PromoteDownstreamResponse contains the promotions created for downstream freight promotions. -type PromoteDownstreamResponse struct { +// ReverifyResponse is the response after triggering reverification. +type ReverifyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // promotions are the Promotion resources created for downstream freight promotions. - Promotions []*v1alpha1.Promotion `protobuf:"bytes,1,rep,name=promotions,proto3" json:"promotions,omitempty"` } -func (x *PromoteDownstreamResponse) Reset() { - *x = PromoteDownstreamResponse{} +func (x *ReverifyResponse) Reset() { + *x = ReverifyResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5162,13 +5108,13 @@ func (x *PromoteDownstreamResponse) Reset() { } } -func (x *PromoteDownstreamResponse) String() string { +func (x *ReverifyResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PromoteDownstreamResponse) ProtoMessage() {} +func (*ReverifyResponse) ProtoMessage() {} -func (x *PromoteDownstreamResponse) ProtoReflect() protoreflect.Message { +func (x *ReverifyResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5180,42 +5126,25 @@ func (x *PromoteDownstreamResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PromoteDownstreamResponse.ProtoReflect.Descriptor instead. -func (*PromoteDownstreamResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ReverifyResponse.ProtoReflect.Descriptor instead. +func (*ReverifyResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{84} } -func (x *PromoteDownstreamResponse) GetPromotions() []*v1alpha1.Promotion { - if x != nil { - return x.Promotions - } - return nil -} - -// QueryFreightRequest is the request for searching freight based on specified criteria. -type QueryFreightRequest struct { +// AbortVerificationRequest is the request for canceling running verification processes for a stage. +type AbortVerificationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project to search for freight. + // project is the name of the project containing the stage. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is the name of the stage to filter freight by. + // stage is the name of the stage whose verification should be aborted. Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` - // group_by specifies how to group the freight results. - GroupBy string `protobuf:"bytes,3,opt,name=group_by,json=groupBy,proto3" json:"group_by,omitempty"` - // group specifies which group to return results for. - Group string `protobuf:"bytes,4,opt,name=group,proto3" json:"group,omitempty"` - // order_by specifies how to order the freight results. - OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` - // reverse indicates whether to reverse the order of results. - Reverse bool `protobuf:"varint,6,opt,name=reverse,proto3" json:"reverse,omitempty"` - // origins filters freight by their origins (e.g., warehouse names). - Origins []string `protobuf:"bytes,7,rep,name=origins,proto3" json:"origins,omitempty"` } -func (x *QueryFreightRequest) Reset() { - *x = QueryFreightRequest{} +func (x *AbortVerificationRequest) Reset() { + *x = AbortVerificationRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5223,13 +5152,13 @@ func (x *QueryFreightRequest) Reset() { } } -func (x *QueryFreightRequest) String() string { +func (x *AbortVerificationRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryFreightRequest) ProtoMessage() {} +func (*AbortVerificationRequest) ProtoMessage() {} -func (x *QueryFreightRequest) ProtoReflect() protoreflect.Message { +func (x *AbortVerificationRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5241,72 +5170,34 @@ func (x *QueryFreightRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QueryFreightRequest.ProtoReflect.Descriptor instead. -func (*QueryFreightRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use AbortVerificationRequest.ProtoReflect.Descriptor instead. +func (*AbortVerificationRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{85} } -func (x *QueryFreightRequest) GetProject() string { +func (x *AbortVerificationRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *QueryFreightRequest) GetStage() string { +func (x *AbortVerificationRequest) GetStage() string { if x != nil { return x.Stage } return "" } -func (x *QueryFreightRequest) GetGroupBy() string { - if x != nil { - return x.GroupBy - } - return "" -} - -func (x *QueryFreightRequest) GetGroup() string { - if x != nil { - return x.Group - } - return "" -} - -func (x *QueryFreightRequest) GetOrderBy() string { - if x != nil { - return x.OrderBy - } - return "" -} - -func (x *QueryFreightRequest) GetReverse() bool { - if x != nil { - return x.Reverse - } - return false -} - -func (x *QueryFreightRequest) GetOrigins() []string { - if x != nil { - return x.Origins - } - return nil -} - -// QueryFreightResponse contains the grouped freight search results. -type QueryFreightResponse struct { +// AbortVerificationResponse is the response after aborting verification. +type AbortVerificationResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // groups maps group names to their corresponding freight lists. - Groups map[string]*FreightList `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *QueryFreightResponse) Reset() { - *x = QueryFreightResponse{} +func (x *AbortVerificationResponse) Reset() { + *x = AbortVerificationResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5314,13 +5205,13 @@ func (x *QueryFreightResponse) Reset() { } } -func (x *QueryFreightResponse) String() string { +func (x *AbortVerificationResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QueryFreightResponse) ProtoMessage() {} +func (*AbortVerificationResponse) ProtoMessage() {} -func (x *QueryFreightResponse) ProtoReflect() protoreflect.Message { +func (x *AbortVerificationResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5332,30 +5223,23 @@ func (x *QueryFreightResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QueryFreightResponse.ProtoReflect.Descriptor instead. -func (*QueryFreightResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use AbortVerificationResponse.ProtoReflect.Descriptor instead. +func (*AbortVerificationResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{86} } -func (x *QueryFreightResponse) GetGroups() map[string]*FreightList { - if x != nil { - return x.Groups - } - return nil -} - -// FreightList contains a list of freight resources. -type FreightList struct { +// ListWarehousesRequest is the request for listing warehouses within a project. +type ListWarehousesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // freight is the list of Freight resources. - Freight []*v1alpha1.Freight `protobuf:"bytes,1,rep,name=freight,proto3" json:"freight,omitempty"` + // project is the name of the project whose warehouses should be listed. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *FreightList) Reset() { - *x = FreightList{} +func (x *ListWarehousesRequest) Reset() { + *x = ListWarehousesRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5363,13 +5247,13 @@ func (x *FreightList) Reset() { } } -func (x *FreightList) String() string { +func (x *ListWarehousesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FreightList) ProtoMessage() {} +func (*ListWarehousesRequest) ProtoMessage() {} -func (x *FreightList) ProtoReflect() protoreflect.Message { +func (x *ListWarehousesRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5381,36 +5265,30 @@ func (x *FreightList) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FreightList.ProtoReflect.Descriptor instead. -func (*FreightList) Descriptor() ([]byte, []int) { +// Deprecated: Use ListWarehousesRequest.ProtoReflect.Descriptor instead. +func (*ListWarehousesRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{87} } -func (x *FreightList) GetFreight() []*v1alpha1.Freight { +func (x *ListWarehousesRequest) GetProject() string { if x != nil { - return x.Freight + return x.Project } - return nil + return "" } -// UpdateFreightAliasRequest is the request for updating a freight's alias. -type UpdateFreightAliasRequest struct { +// ListWarehousesResponse contains a list of warehouses within a project. +type ListWarehousesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the freight. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the freight whose alias should be updated. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // old_alias is the current alias of the freight. - OldAlias string `protobuf:"bytes,3,opt,name=old_alias,json=oldAlias,proto3" json:"old_alias,omitempty"` - // new_alias is the new alias to assign to the freight. - NewAlias string `protobuf:"bytes,4,opt,name=new_alias,json=newAlias,proto3" json:"new_alias,omitempty"` + // warehouses is the list of Warehouse resources found in the project. + Warehouses []*v1alpha1.Warehouse `protobuf:"bytes,1,rep,name=warehouses,proto3" json:"warehouses,omitempty"` } -func (x *UpdateFreightAliasRequest) Reset() { - *x = UpdateFreightAliasRequest{} +func (x *ListWarehousesResponse) Reset() { + *x = ListWarehousesResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5418,13 +5296,13 @@ func (x *UpdateFreightAliasRequest) Reset() { } } -func (x *UpdateFreightAliasRequest) String() string { +func (x *ListWarehousesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateFreightAliasRequest) ProtoMessage() {} +func (*ListWarehousesResponse) ProtoMessage() {} -func (x *UpdateFreightAliasRequest) ProtoReflect() protoreflect.Message { +func (x *ListWarehousesResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5436,48 +5314,34 @@ func (x *UpdateFreightAliasRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateFreightAliasRequest.ProtoReflect.Descriptor instead. -func (*UpdateFreightAliasRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListWarehousesResponse.ProtoReflect.Descriptor instead. +func (*ListWarehousesResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{88} } -func (x *UpdateFreightAliasRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -func (x *UpdateFreightAliasRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *UpdateFreightAliasRequest) GetOldAlias() string { - if x != nil { - return x.OldAlias - } - return "" -} - -func (x *UpdateFreightAliasRequest) GetNewAlias() string { +func (x *ListWarehousesResponse) GetWarehouses() []*v1alpha1.Warehouse { if x != nil { - return x.NewAlias + return x.Warehouses } - return "" + return nil } -// UpdateFreightAliasResponse is the response after updating a freight's alias. -type UpdateFreightAliasResponse struct { +// GetWarehouseRequest is the request for retrieving details of a specific warehouse. +type GetWarehouseRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // project is the name of the project containing the warehouse. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the warehouse to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the format for raw resource representation. + Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *UpdateFreightAliasResponse) Reset() { - *x = UpdateFreightAliasResponse{} +func (x *GetWarehouseRequest) Reset() { + *x = GetWarehouseRequest{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5485,13 +5349,13 @@ func (x *UpdateFreightAliasResponse) Reset() { } } -func (x *UpdateFreightAliasResponse) String() string { +func (x *GetWarehouseRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateFreightAliasResponse) ProtoMessage() {} +func (*GetWarehouseRequest) ProtoMessage() {} -func (x *UpdateFreightAliasResponse) ProtoReflect() protoreflect.Message { +func (x *GetWarehouseRequest) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5503,25 +5367,47 @@ func (x *UpdateFreightAliasResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateFreightAliasResponse.ProtoReflect.Descriptor instead. -func (*UpdateFreightAliasResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetWarehouseRequest.ProtoReflect.Descriptor instead. +func (*GetWarehouseRequest) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{89} } -// ReverifyRequest is the request for triggering re-execution of verification processes for a stage. -type ReverifyRequest struct { +func (x *GetWarehouseRequest) GetProject() string { + if x != nil { + return x.Project + } + return "" +} + +func (x *GetWarehouseRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetWarehouseRequest) GetFormat() RawFormat { + if x != nil { + return x.Format + } + return RawFormat_RAW_FORMAT_UNSPECIFIED +} + +// GetWarehouseResponse contains the requested warehouse information. +type GetWarehouseResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the stage. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is the name of the stage to reverify. - Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` + // Types that are assignable to Result: + // + // *GetWarehouseResponse_Warehouse + // *GetWarehouseResponse_Raw + Result isGetWarehouseResponse_Result `protobuf_oneof:"result"` } -func (x *ReverifyRequest) Reset() { - *x = ReverifyRequest{} +func (x *GetWarehouseResponse) Reset() { + *x = GetWarehouseResponse{} if protoimpl.UnsafeEnabled { mi := &file_api_service_v1alpha1_service_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5529,13 +5415,13 @@ func (x *ReverifyRequest) Reset() { } } -func (x *ReverifyRequest) String() string { +func (x *GetWarehouseResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReverifyRequest) ProtoMessage() {} +func (*GetWarehouseResponse) ProtoMessage() {} -func (x *ReverifyRequest) ProtoReflect() protoreflect.Message { +func (x *GetWarehouseResponse) ProtoReflect() protoreflect.Message { mi := &file_api_service_v1alpha1_service_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5547,93 +5433,79 @@ func (x *ReverifyRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReverifyRequest.ProtoReflect.Descriptor instead. -func (*ReverifyRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetWarehouseResponse.ProtoReflect.Descriptor instead. +func (*GetWarehouseResponse) Descriptor() ([]byte, []int) { return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{90} } -func (x *ReverifyRequest) GetProject() string { - if x != nil { - return x.Project +func (m *GetWarehouseResponse) GetResult() isGetWarehouseResponse_Result { + if m != nil { + return m.Result } - return "" + return nil } -func (x *ReverifyRequest) GetStage() string { - if x != nil { - return x.Stage +func (x *GetWarehouseResponse) GetWarehouse() *v1alpha1.Warehouse { + if x, ok := x.GetResult().(*GetWarehouseResponse_Warehouse); ok { + return x.Warehouse } - return "" -} - -// ReverifyResponse is the response after triggering reverification. -type ReverifyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + return nil } -func (x *ReverifyResponse) Reset() { - *x = ReverifyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[91] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *GetWarehouseResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetWarehouseResponse_Raw); ok { + return x.Raw } + return nil } -func (x *ReverifyResponse) String() string { - return protoimpl.X.MessageStringOf(x) +type isGetWarehouseResponse_Result interface { + isGetWarehouseResponse_Result() } -func (*ReverifyResponse) ProtoMessage() {} - -func (x *ReverifyResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[91] - 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) +type GetWarehouseResponse_Warehouse struct { + // warehouse contains the Warehouse resource in structured format. + Warehouse *v1alpha1.Warehouse `protobuf:"bytes,1,opt,name=warehouse,proto3,oneof"` } -// Deprecated: Use ReverifyResponse.ProtoReflect.Descriptor instead. -func (*ReverifyResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{91} +type GetWarehouseResponse_Raw struct { + // raw contains the Warehouse resource in the requested raw format. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` } -// AbortVerificationRequest is the request for canceling running verification processes for a stage. -type AbortVerificationRequest struct { +func (*GetWarehouseResponse_Warehouse) isGetWarehouseResponse_Result() {} + +func (*GetWarehouseResponse_Raw) isGetWarehouseResponse_Result() {} + +// WatchWarehousesRequest is the request for watching warehouse changes via streaming. +type WatchWarehousesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the stage. + // project is the name of the project whose warehouses should be watched. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // stage is the name of the stage whose verification should be aborted. - Stage string `protobuf:"bytes,2,opt,name=stage,proto3" json:"stage,omitempty"` + // name is the name of a specific warehouse to watch, if empty all warehouses in the project are watched. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *AbortVerificationRequest) Reset() { - *x = AbortVerificationRequest{} +func (x *WatchWarehousesRequest) Reset() { + *x = WatchWarehousesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[92] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AbortVerificationRequest) String() string { +func (x *WatchWarehousesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AbortVerificationRequest) ProtoMessage() {} +func (*WatchWarehousesRequest) ProtoMessage() {} -func (x *AbortVerificationRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[92] +func (x *WatchWarehousesRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5644,49 +5516,54 @@ func (x *AbortVerificationRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AbortVerificationRequest.ProtoReflect.Descriptor instead. -func (*AbortVerificationRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{92} +// Deprecated: Use WatchWarehousesRequest.ProtoReflect.Descriptor instead. +func (*WatchWarehousesRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{91} } -func (x *AbortVerificationRequest) GetProject() string { +func (x *WatchWarehousesRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *AbortVerificationRequest) GetStage() string { +func (x *WatchWarehousesRequest) GetName() string { if x != nil { - return x.Stage + return x.Name } return "" } -// AbortVerificationResponse is the response after aborting verification. -type AbortVerificationResponse struct { +// WatchWarehousesResponse contains warehouse change notifications. +type WatchWarehousesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // warehouse is the Warehouse resource that changed. + Warehouse *v1alpha1.Warehouse `protobuf:"bytes,1,opt,name=warehouse,proto3" json:"warehouse,omitempty"` + // type indicates the type of change (ADDED, MODIFIED, DELETED). + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (x *AbortVerificationResponse) Reset() { - *x = AbortVerificationResponse{} +func (x *WatchWarehousesResponse) Reset() { + *x = WatchWarehousesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[93] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AbortVerificationResponse) String() string { +func (x *WatchWarehousesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AbortVerificationResponse) ProtoMessage() {} +func (*WatchWarehousesResponse) ProtoMessage() {} -func (x *AbortVerificationResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[93] +func (x *WatchWarehousesResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5697,38 +5574,54 @@ func (x *AbortVerificationResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AbortVerificationResponse.ProtoReflect.Descriptor instead. -func (*AbortVerificationResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{93} +// Deprecated: Use WatchWarehousesResponse.ProtoReflect.Descriptor instead. +func (*WatchWarehousesResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{92} } -// ListWarehousesRequest is the request for listing warehouses within a project. -type ListWarehousesRequest struct { +func (x *WatchWarehousesResponse) GetWarehouse() *v1alpha1.Warehouse { + if x != nil { + return x.Warehouse + } + return nil +} + +func (x *WatchWarehousesResponse) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// DeleteWarehouseRequest is the request for deleting a warehouse. +type DeleteWarehouseRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose warehouses should be listed. + // project is the name of the project containing the warehouse. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the warehouse to delete. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListWarehousesRequest) Reset() { - *x = ListWarehousesRequest{} +func (x *DeleteWarehouseRequest) Reset() { + *x = DeleteWarehouseRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[94] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListWarehousesRequest) String() string { +func (x *DeleteWarehouseRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListWarehousesRequest) ProtoMessage() {} +func (*DeleteWarehouseRequest) ProtoMessage() {} -func (x *ListWarehousesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[94] +func (x *DeleteWarehouseRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5739,45 +5632,49 @@ func (x *ListWarehousesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListWarehousesRequest.ProtoReflect.Descriptor instead. -func (*ListWarehousesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{94} +// Deprecated: Use DeleteWarehouseRequest.ProtoReflect.Descriptor instead. +func (*DeleteWarehouseRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{93} } -func (x *ListWarehousesRequest) GetProject() string { +func (x *DeleteWarehouseRequest) GetProject() string { if x != nil { return x.Project } return "" } -// ListWarehousesResponse contains a list of warehouses within a project. -type ListWarehousesResponse struct { +func (x *DeleteWarehouseRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// DeleteWarehouseResponse is the response after deleting a warehouse. +type DeleteWarehouseResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // warehouses is the list of Warehouse resources found in the project. - Warehouses []*v1alpha1.Warehouse `protobuf:"bytes,1,rep,name=warehouses,proto3" json:"warehouses,omitempty"` } -func (x *ListWarehousesResponse) Reset() { - *x = ListWarehousesResponse{} +func (x *DeleteWarehouseResponse) Reset() { + *x = DeleteWarehouseResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[95] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListWarehousesResponse) String() string { +func (x *DeleteWarehouseResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListWarehousesResponse) ProtoMessage() {} +func (*DeleteWarehouseResponse) ProtoMessage() {} -func (x *ListWarehousesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[95] +func (x *DeleteWarehouseResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5788,49 +5685,53 @@ func (x *ListWarehousesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListWarehousesResponse.ProtoReflect.Descriptor instead. -func (*ListWarehousesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{95} -} - -func (x *ListWarehousesResponse) GetWarehouses() []*v1alpha1.Warehouse { - if x != nil { - return x.Warehouses - } - return nil +// Deprecated: Use DeleteWarehouseResponse.ProtoReflect.Descriptor instead. +func (*DeleteWarehouseResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{94} } -// GetWarehouseRequest is the request for retrieving details of a specific warehouse. -type GetWarehouseRequest struct { +// CreateConfigMapRequest is the request for creating a project-level, +// system-level, or shared ConfigMap. +type CreateConfigMapRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the warehouse. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the warehouse to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the format for raw resource representation. - Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` + // system_level indicates whether the request is to create a system-level + // ConfigMap instead of a project-level or shared one. + SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project where the ConfigMap will be created. If + // empty and system_level is false, creates the ConfigMap in the shared + // resources namespace. This value is ignored if system_level is true. + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the ConfigMap to create. + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // description is a human-readable description of the ConfigMap. + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + // data contains the key-value pairs that make up the ConfigMap. + Data map[string]string `protobuf:"bytes,5,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // replicate, when true, replicates this ConfigMap to all Project namespaces + // by setting the kargo.akuity.io/replicate-to: "*" annotation. + Replicate bool `protobuf:"varint,6,opt,name=replicate,proto3" json:"replicate,omitempty"` } -func (x *GetWarehouseRequest) Reset() { - *x = GetWarehouseRequest{} +func (x *CreateConfigMapRequest) Reset() { + *x = CreateConfigMapRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[96] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetWarehouseRequest) String() string { +func (x *CreateConfigMapRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetWarehouseRequest) ProtoMessage() {} +func (*CreateConfigMapRequest) ProtoMessage() {} -func (x *GetWarehouseRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[96] +func (x *CreateConfigMapRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5841,62 +5742,81 @@ func (x *GetWarehouseRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetWarehouseRequest.ProtoReflect.Descriptor instead. -func (*GetWarehouseRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{96} +// Deprecated: Use CreateConfigMapRequest.ProtoReflect.Descriptor instead. +func (*CreateConfigMapRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{95} } -func (x *GetWarehouseRequest) GetProject() string { +func (x *CreateConfigMapRequest) GetSystemLevel() bool { + if x != nil { + return x.SystemLevel + } + return false +} + +func (x *CreateConfigMapRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *GetWarehouseRequest) GetName() string { +func (x *CreateConfigMapRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *GetWarehouseRequest) GetFormat() RawFormat { +func (x *CreateConfigMapRequest) GetDescription() string { if x != nil { - return x.Format + return x.Description } - return RawFormat_RAW_FORMAT_UNSPECIFIED + return "" } -// GetWarehouseResponse contains the requested warehouse information. -type GetWarehouseResponse struct { +func (x *CreateConfigMapRequest) GetData() map[string]string { + if x != nil { + return x.Data + } + return nil +} + +func (x *CreateConfigMapRequest) GetReplicate() bool { + if x != nil { + return x.Replicate + } + return false +} + +// CreateConfigMapResponse is the response containing the ConfigMap that was +// created. +type CreateConfigMapResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Result: - // - // *GetWarehouseResponse_Warehouse - // *GetWarehouseResponse_Raw - Result isGetWarehouseResponse_Result `protobuf_oneof:"result"` + // config_map is the ConfigMap that was created. + ConfigMap *v1.ConfigMap `protobuf:"bytes,1,opt,name=config_map,json=configMap,proto3" json:"config_map,omitempty"` } -func (x *GetWarehouseResponse) Reset() { - *x = GetWarehouseResponse{} +func (x *CreateConfigMapResponse) Reset() { + *x = CreateConfigMapResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[97] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetWarehouseResponse) String() string { +func (x *CreateConfigMapResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetWarehouseResponse) ProtoMessage() {} +func (*CreateConfigMapResponse) ProtoMessage() {} -func (x *GetWarehouseResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[97] +func (x *CreateConfigMapResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5907,79 +5827,53 @@ func (x *GetWarehouseResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetWarehouseResponse.ProtoReflect.Descriptor instead. -func (*GetWarehouseResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{97} +// Deprecated: Use CreateConfigMapResponse.ProtoReflect.Descriptor instead. +func (*CreateConfigMapResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{96} } -func (m *GetWarehouseResponse) GetResult() isGetWarehouseResponse_Result { - if m != nil { - return m.Result +func (x *CreateConfigMapResponse) GetConfigMap() *v1.ConfigMap { + if x != nil { + return x.ConfigMap } return nil } -func (x *GetWarehouseResponse) GetWarehouse() *v1alpha1.Warehouse { - if x, ok := x.GetResult().(*GetWarehouseResponse_Warehouse); ok { - return x.Warehouse - } - return nil -} +// DeleteConfigMapRequest is the request for deleting a project-level, +// system-level, or shared ConfigMap. +type DeleteConfigMapRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *GetWarehouseResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetWarehouseResponse_Raw); ok { - return x.Raw - } - return nil -} - -type isGetWarehouseResponse_Result interface { - isGetWarehouseResponse_Result() -} - -type GetWarehouseResponse_Warehouse struct { - // warehouse contains the Warehouse resource in structured format. - Warehouse *v1alpha1.Warehouse `protobuf:"bytes,1,opt,name=warehouse,proto3,oneof"` -} - -type GetWarehouseResponse_Raw struct { - // raw contains the Warehouse resource in the requested raw format. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` -} - -func (*GetWarehouseResponse_Warehouse) isGetWarehouseResponse_Result() {} - -func (*GetWarehouseResponse_Raw) isGetWarehouseResponse_Result() {} - -// WatchWarehousesRequest is the request for watching warehouse changes via streaming. -type WatchWarehousesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // project is the name of the project whose warehouses should be watched. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of a specific warehouse to watch, if empty all warehouses in the project are watched. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // system_level indicates whether the request is to delete a + // system-level ConfigMap instead of a project-level or shared one. + SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project in which to delete a ConfigMap. If empty + // and system_level is false, deletes a shared ConfigMap. This value is + // ignored if system_level is true. + Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the ConfigMap to delete. + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } -func (x *WatchWarehousesRequest) Reset() { - *x = WatchWarehousesRequest{} +func (x *DeleteConfigMapRequest) Reset() { + *x = DeleteConfigMapRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[98] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchWarehousesRequest) String() string { +func (x *DeleteConfigMapRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchWarehousesRequest) ProtoMessage() {} +func (*DeleteConfigMapRequest) ProtoMessage() {} -func (x *WatchWarehousesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[98] +func (x *DeleteConfigMapRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5990,54 +5884,56 @@ func (x *WatchWarehousesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchWarehousesRequest.ProtoReflect.Descriptor instead. -func (*WatchWarehousesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{98} +// Deprecated: Use DeleteConfigMapRequest.ProtoReflect.Descriptor instead. +func (*DeleteConfigMapRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{97} } -func (x *WatchWarehousesRequest) GetProject() string { +func (x *DeleteConfigMapRequest) GetSystemLevel() bool { + if x != nil { + return x.SystemLevel + } + return false +} + +func (x *DeleteConfigMapRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *WatchWarehousesRequest) GetName() string { +func (x *DeleteConfigMapRequest) GetName() string { if x != nil { return x.Name } return "" } -// WatchWarehousesResponse contains warehouse change notifications. -type WatchWarehousesResponse struct { +// DeleteConfigMapResponse is the response returned after deleting a ConfigMap. +type DeleteConfigMapResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // warehouse is the Warehouse resource that changed. - Warehouse *v1alpha1.Warehouse `protobuf:"bytes,1,opt,name=warehouse,proto3" json:"warehouse,omitempty"` - // type indicates the type of change (ADDED, MODIFIED, DELETED). - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` } -func (x *WatchWarehousesResponse) Reset() { - *x = WatchWarehousesResponse{} +func (x *DeleteConfigMapResponse) Reset() { + *x = DeleteConfigMapResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[99] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *WatchWarehousesResponse) String() string { +func (x *DeleteConfigMapResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WatchWarehousesResponse) ProtoMessage() {} +func (*DeleteConfigMapResponse) ProtoMessage() {} -func (x *WatchWarehousesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[99] +func (x *DeleteConfigMapResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6048,54 +5944,44 @@ func (x *WatchWarehousesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WatchWarehousesResponse.ProtoReflect.Descriptor instead. -func (*WatchWarehousesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{99} -} - -func (x *WatchWarehousesResponse) GetWarehouse() *v1alpha1.Warehouse { - if x != nil { - return x.Warehouse - } - return nil -} - -func (x *WatchWarehousesResponse) GetType() string { - if x != nil { - return x.Type - } - return "" +// Deprecated: Use DeleteConfigMapResponse.ProtoReflect.Descriptor instead. +func (*DeleteConfigMapResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{98} } -// DeleteWarehouseRequest is the request for deleting a warehouse. -type DeleteWarehouseRequest struct { +// ListConfigMapsRequest is the request for listing all project-level, +// system-level, or shared ConfigMaps. +type ListConfigMapsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the warehouse. + // system_level indicates whether the request is to list system-level + // ConfigMaps instead of project-level or shared ones. + SystemLevel bool `protobuf:"varint,2,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project in which to list ConfigMaps. If empty + // and system_level is false, lists shared ConfigMaps. This value is ignored + // if system_level is true. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the warehouse to delete. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DeleteWarehouseRequest) Reset() { - *x = DeleteWarehouseRequest{} +func (x *ListConfigMapsRequest) Reset() { + *x = ListConfigMapsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[100] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteWarehouseRequest) String() string { +func (x *ListConfigMapsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteWarehouseRequest) ProtoMessage() {} +func (*ListConfigMapsRequest) ProtoMessage() {} -func (x *DeleteWarehouseRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[100] +func (x *ListConfigMapsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6106,49 +5992,52 @@ func (x *DeleteWarehouseRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteWarehouseRequest.ProtoReflect.Descriptor instead. -func (*DeleteWarehouseRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{100} +// Deprecated: Use ListConfigMapsRequest.ProtoReflect.Descriptor instead. +func (*ListConfigMapsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{99} } -func (x *DeleteWarehouseRequest) GetProject() string { +func (x *ListConfigMapsRequest) GetSystemLevel() bool { if x != nil { - return x.Project + return x.SystemLevel } - return "" + return false } -func (x *DeleteWarehouseRequest) GetName() string { +func (x *ListConfigMapsRequest) GetProject() string { if x != nil { - return x.Name + return x.Project } return "" } -// DeleteWarehouseResponse is the response after deleting a warehouse. -type DeleteWarehouseResponse struct { +// ListConfigMapsResponse contains the list of ConfigMaps. +type ListConfigMapsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // config_maps is the list of ConfigMaps. + ConfigMaps []*v1.ConfigMap `protobuf:"bytes,1,rep,name=config_maps,json=configMaps,proto3" json:"config_maps,omitempty"` } -func (x *DeleteWarehouseResponse) Reset() { - *x = DeleteWarehouseResponse{} +func (x *ListConfigMapsResponse) Reset() { + *x = ListConfigMapsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[101] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteWarehouseResponse) String() string { +func (x *ListConfigMapsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteWarehouseResponse) ProtoMessage() {} +func (*ListConfigMapsResponse) ProtoMessage() {} -func (x *DeleteWarehouseResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[101] +func (x *ListConfigMapsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6159,53 +6048,56 @@ func (x *DeleteWarehouseResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteWarehouseResponse.ProtoReflect.Descriptor instead. -func (*DeleteWarehouseResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{101} +// Deprecated: Use ListConfigMapsResponse.ProtoReflect.Descriptor instead. +func (*ListConfigMapsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{100} } -// CreateConfigMapRequest is the request for creating a project-level, +func (x *ListConfigMapsResponse) GetConfigMaps() []*v1.ConfigMap { + if x != nil { + return x.ConfigMaps + } + return nil +} + +// GetConfigMapRequest is the request for getting a specific project-level, // system-level, or shared ConfigMap. -type CreateConfigMapRequest struct { +type GetConfigMapRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to create a system-level + // system_level indicates whether the request is to get a system-level // ConfigMap instead of a project-level or shared one. - SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project where the ConfigMap will be created. If - // empty and system_level is false, creates the ConfigMap in the shared - // resources namespace. This value is ignored if system_level is true. - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the ConfigMap to create. - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - // description is a human-readable description of the ConfigMap. - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - // data contains the key-value pairs that make up the ConfigMap. - Data map[string]string `protobuf:"bytes,5,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // replicate, when true, replicates this ConfigMap to all Project namespaces - // by setting the kargo.akuity.io/replicate-to: "*" annotation. - Replicate bool `protobuf:"varint,6,opt,name=replicate,proto3" json:"replicate,omitempty"` + SystemLevel bool `protobuf:"varint,4,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project in which to get the ConfigMap. If empty + // and system_level is false, gets a shared ConfigMap. This value is ignored + // if system_level is true. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the ConfigMap to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the desired response format (structured object or raw + // YAML). + Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *CreateConfigMapRequest) Reset() { - *x = CreateConfigMapRequest{} +func (x *GetConfigMapRequest) Reset() { + *x = GetConfigMapRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[102] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateConfigMapRequest) String() string { +func (x *GetConfigMapRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateConfigMapRequest) ProtoMessage() {} +func (*GetConfigMapRequest) ProtoMessage() {} -func (x *CreateConfigMapRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[102] +func (x *GetConfigMapRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6216,81 +6108,69 @@ func (x *CreateConfigMapRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateConfigMapRequest.ProtoReflect.Descriptor instead. -func (*CreateConfigMapRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{102} +// Deprecated: Use GetConfigMapRequest.ProtoReflect.Descriptor instead. +func (*GetConfigMapRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{101} } -func (x *CreateConfigMapRequest) GetSystemLevel() bool { +func (x *GetConfigMapRequest) GetSystemLevel() bool { if x != nil { return x.SystemLevel } return false } -func (x *CreateConfigMapRequest) GetProject() string { +func (x *GetConfigMapRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *CreateConfigMapRequest) GetName() string { +func (x *GetConfigMapRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *CreateConfigMapRequest) GetDescription() string { +func (x *GetConfigMapRequest) GetFormat() RawFormat { if x != nil { - return x.Description + return x.Format } - return "" + return RawFormat_RAW_FORMAT_UNSPECIFIED } -func (x *CreateConfigMapRequest) GetData() map[string]string { - if x != nil { - return x.Data - } - return nil -} - -func (x *CreateConfigMapRequest) GetReplicate() bool { - if x != nil { - return x.Replicate - } - return false -} - -// CreateConfigMapResponse is the response containing the ConfigMap that was -// created. -type CreateConfigMapResponse struct { +// GetConfigMapResponse contains the requested ConfigMap. +type GetConfigMapResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // config_map is the ConfigMap that was created. - ConfigMap *v11.ConfigMap `protobuf:"bytes,1,opt,name=config_map,json=configMap,proto3" json:"config_map,omitempty"` + // Types that are assignable to Result: + // + // *GetConfigMapResponse_ConfigMap + // *GetConfigMapResponse_Raw + Result isGetConfigMapResponse_Result `protobuf_oneof:"result"` } -func (x *CreateConfigMapResponse) Reset() { - *x = CreateConfigMapResponse{} +func (x *GetConfigMapResponse) Reset() { + *x = GetConfigMapResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[103] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateConfigMapResponse) String() string { +func (x *GetConfigMapResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateConfigMapResponse) ProtoMessage() {} +func (*GetConfigMapResponse) ProtoMessage() {} -func (x *CreateConfigMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[103] +func (x *GetConfigMapResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6301,53 +6181,92 @@ func (x *CreateConfigMapResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateConfigMapResponse.ProtoReflect.Descriptor instead. -func (*CreateConfigMapResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{103} +// Deprecated: Use GetConfigMapResponse.ProtoReflect.Descriptor instead. +func (*GetConfigMapResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{102} } -func (x *CreateConfigMapResponse) GetConfigMap() *v11.ConfigMap { - if x != nil { +func (m *GetConfigMapResponse) GetResult() isGetConfigMapResponse_Result { + if m != nil { + return m.Result + } + return nil +} + +func (x *GetConfigMapResponse) GetConfigMap() *v1.ConfigMap { + if x, ok := x.GetResult().(*GetConfigMapResponse_ConfigMap); ok { return x.ConfigMap } return nil } -// DeleteConfigMapRequest is the request for deleting a project-level, +func (x *GetConfigMapResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetConfigMapResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetConfigMapResponse_Result interface { + isGetConfigMapResponse_Result() +} + +type GetConfigMapResponse_ConfigMap struct { + // config_map is the structured Kubernetes ConfigMap object. + ConfigMap *v1.ConfigMap `protobuf:"bytes,1,opt,name=config_map,json=configMap,proto3,oneof"` +} + +type GetConfigMapResponse_Raw struct { + // raw is the raw YAML representation of the ConfigMap. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetConfigMapResponse_ConfigMap) isGetConfigMapResponse_Result() {} + +func (*GetConfigMapResponse_Raw) isGetConfigMapResponse_Result() {} + +// UpdateConfigMapRequest is the request for updating a project-level, // system-level, or shared ConfigMap. -type DeleteConfigMapRequest struct { +type UpdateConfigMapRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to delete a - // system-level ConfigMap instead of a project-level or shared one. + // system_level indicates whether the request is to update a system-level + // ConfigMap instead of a project-level or shared one. SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project in which to delete a ConfigMap. If empty - // and system_level is false, deletes a shared ConfigMap. This value is - // ignored if system_level is true. + // project is the name of the project containing the ConfigMap to be updated. + // If empty and system_level is false, updates the ConfigMap in the shared + // resources namespace. This value is ignored if system_level is true. Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the ConfigMap to delete. + // name is the name of the ConfigMap to be updated. Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // description is a human-readable description of the ConfigMap. + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + // data contains the key-value pairs that make up the ConfigMap. + Data map[string]string `protobuf:"bytes,5,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // replicate, when true, replicates this ConfigMap to all Project namespaces + // by setting the kargo.akuity.io/replicate-to: "*" annotation. + Replicate bool `protobuf:"varint,6,opt,name=replicate,proto3" json:"replicate,omitempty"` } -func (x *DeleteConfigMapRequest) Reset() { - *x = DeleteConfigMapRequest{} +func (x *UpdateConfigMapRequest) Reset() { + *x = UpdateConfigMapRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[104] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteConfigMapRequest) String() string { +func (x *UpdateConfigMapRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteConfigMapRequest) ProtoMessage() {} +func (*UpdateConfigMapRequest) ProtoMessage() {} -func (x *DeleteConfigMapRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[104] +func (x *UpdateConfigMapRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6358,104 +6277,80 @@ func (x *DeleteConfigMapRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteConfigMapRequest.ProtoReflect.Descriptor instead. -func (*DeleteConfigMapRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{104} +// Deprecated: Use UpdateConfigMapRequest.ProtoReflect.Descriptor instead. +func (*UpdateConfigMapRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{103} } -func (x *DeleteConfigMapRequest) GetSystemLevel() bool { +func (x *UpdateConfigMapRequest) GetSystemLevel() bool { if x != nil { return x.SystemLevel } return false } -func (x *DeleteConfigMapRequest) GetProject() string { +func (x *UpdateConfigMapRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *DeleteConfigMapRequest) GetName() string { +func (x *UpdateConfigMapRequest) GetName() string { if x != nil { return x.Name } return "" } -// DeleteConfigMapResponse is the response returned after deleting a ConfigMap. -type DeleteConfigMapResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *DeleteConfigMapResponse) Reset() { - *x = DeleteConfigMapResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[105] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *UpdateConfigMapRequest) GetDescription() string { + if x != nil { + return x.Description } + return "" } -func (x *DeleteConfigMapResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteConfigMapResponse) ProtoMessage() {} - -func (x *DeleteConfigMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[105] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *UpdateConfigMapRequest) GetData() map[string]string { + if x != nil { + return x.Data } - return mi.MessageOf(x) + return nil } -// Deprecated: Use DeleteConfigMapResponse.ProtoReflect.Descriptor instead. -func (*DeleteConfigMapResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{105} +func (x *UpdateConfigMapRequest) GetReplicate() bool { + if x != nil { + return x.Replicate + } + return false } -// ListConfigMapsRequest is the request for listing all project-level, -// system-level, or shared ConfigMaps. -type ListConfigMapsRequest struct { +// UpdateConfigMapResponse is the response containing the updated ConfigMap. +type UpdateConfigMapResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to list system-level - // ConfigMaps instead of project-level or shared ones. - SystemLevel bool `protobuf:"varint,2,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project in which to list ConfigMaps. If empty - // and system_level is false, lists shared ConfigMaps. This value is ignored - // if system_level is true. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // config_map is the updated ConfigMap. + ConfigMap *v1.ConfigMap `protobuf:"bytes,1,opt,name=config_map,json=configMap,proto3" json:"config_map,omitempty"` } -func (x *ListConfigMapsRequest) Reset() { - *x = ListConfigMapsRequest{} +func (x *UpdateConfigMapResponse) Reset() { + *x = UpdateConfigMapResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[106] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListConfigMapsRequest) String() string { +func (x *UpdateConfigMapResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListConfigMapsRequest) ProtoMessage() {} +func (*UpdateConfigMapResponse) ProtoMessage() {} -func (x *ListConfigMapsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[106] +func (x *UpdateConfigMapResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6466,52 +6361,59 @@ func (x *ListConfigMapsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListConfigMapsRequest.ProtoReflect.Descriptor instead. -func (*ListConfigMapsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{106} -} - -func (x *ListConfigMapsRequest) GetSystemLevel() bool { - if x != nil { - return x.SystemLevel - } - return false +// Deprecated: Use UpdateConfigMapResponse.ProtoReflect.Descriptor instead. +func (*UpdateConfigMapResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{104} } -func (x *ListConfigMapsRequest) GetProject() string { +func (x *UpdateConfigMapResponse) GetConfigMap() *v1.ConfigMap { if x != nil { - return x.Project + return x.ConfigMap } - return "" + return nil } -// ListConfigMapsResponse contains the list of ConfigMaps. -type ListConfigMapsResponse struct { +// CreateRepoCredentialsRequest is the request for creating new credentials for accessing external repositories. +type CreateRepoCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // config_maps is the list of ConfigMaps. - ConfigMaps []*v11.ConfigMap `protobuf:"bytes,1,rep,name=config_maps,json=configMaps,proto3" json:"config_maps,omitempty"` + // project is the name of the project where the credentials will be stored. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the credentials. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // description is a human-readable description of the credentials. + Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` + // type specifies the credential type (git, helm, image). + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + // repo_url is the URL of the repository or registry these credentials apply to. + RepoUrl string `protobuf:"bytes,4,opt,name=repo_url,json=repoURL,proto3" json:"repo_url,omitempty"` + // repo_url_is_regex indicates whether repo_url should be treated as a regular expression. + RepoUrlIsRegex bool `protobuf:"varint,5,opt,name=repo_url_is_regex,json=repoURLIsRegex,proto3" json:"repo_url_is_regex,omitempty"` + // username is the username for authentication. + Username string `protobuf:"bytes,6,opt,name=username,proto3" json:"username,omitempty"` + // password is the password or token for authentication. + Password string `protobuf:"bytes,7,opt,name=password,proto3" json:"password,omitempty"` } -func (x *ListConfigMapsResponse) Reset() { - *x = ListConfigMapsResponse{} +func (x *CreateRepoCredentialsRequest) Reset() { + *x = CreateRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[107] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListConfigMapsResponse) String() string { +func (x *CreateRepoCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListConfigMapsResponse) ProtoMessage() {} +func (*CreateRepoCredentialsRequest) ProtoMessage() {} -func (x *ListConfigMapsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[107] +func (x *CreateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6522,129 +6424,94 @@ func (x *ListConfigMapsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListConfigMapsResponse.ProtoReflect.Descriptor instead. -func (*ListConfigMapsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{107} +// Deprecated: Use CreateRepoCredentialsRequest.ProtoReflect.Descriptor instead. +func (*CreateRepoCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{105} } -func (x *ListConfigMapsResponse) GetConfigMaps() []*v11.ConfigMap { +func (x *CreateRepoCredentialsRequest) GetProject() string { if x != nil { - return x.ConfigMaps + return x.Project } - return nil + return "" } -// GetConfigMapRequest is the request for getting a specific project-level, -// system-level, or shared ConfigMap. -type GetConfigMapRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // system_level indicates whether the request is to get a system-level - // ConfigMap instead of a project-level or shared one. - SystemLevel bool `protobuf:"varint,4,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project in which to get the ConfigMap. If empty - // and system_level is false, gets a shared ConfigMap. This value is ignored - // if system_level is true. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the ConfigMap to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the desired response format (structured object or raw - // YAML). - Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` -} - -func (x *GetConfigMapRequest) Reset() { - *x = GetConfigMapRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[108] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *CreateRepoCredentialsRequest) GetName() string { + if x != nil { + return x.Name } + return "" } -func (x *GetConfigMapRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetConfigMapRequest) ProtoMessage() {} - -func (x *GetConfigMapRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[108] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *CreateRepoCredentialsRequest) GetDescription() string { + if x != nil { + return x.Description } - return mi.MessageOf(x) + return "" } -// Deprecated: Use GetConfigMapRequest.ProtoReflect.Descriptor instead. -func (*GetConfigMapRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{108} +func (x *CreateRepoCredentialsRequest) GetType() string { + if x != nil { + return x.Type + } + return "" } -func (x *GetConfigMapRequest) GetSystemLevel() bool { +func (x *CreateRepoCredentialsRequest) GetRepoUrl() string { if x != nil { - return x.SystemLevel + return x.RepoUrl } - return false + return "" } -func (x *GetConfigMapRequest) GetProject() string { +func (x *CreateRepoCredentialsRequest) GetRepoUrlIsRegex() bool { if x != nil { - return x.Project + return x.RepoUrlIsRegex } - return "" + return false } -func (x *GetConfigMapRequest) GetName() string { +func (x *CreateRepoCredentialsRequest) GetUsername() string { if x != nil { - return x.Name + return x.Username } return "" } -func (x *GetConfigMapRequest) GetFormat() RawFormat { +func (x *CreateRepoCredentialsRequest) GetPassword() string { if x != nil { - return x.Format + return x.Password } - return RawFormat_RAW_FORMAT_UNSPECIFIED + return "" } -// GetConfigMapResponse contains the requested ConfigMap. -type GetConfigMapResponse struct { +// CreateRepoCredentialsResponse contains the newly created repository credentials. +type CreateRepoCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Result: - // - // *GetConfigMapResponse_ConfigMap - // *GetConfigMapResponse_Raw - Result isGetConfigMapResponse_Result `protobuf_oneof:"result"` + // credentials is the created Kubernetes Secret containing the credentials. + Credentials *v1.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *GetConfigMapResponse) Reset() { - *x = GetConfigMapResponse{} +func (x *CreateRepoCredentialsResponse) Reset() { + *x = CreateRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[109] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetConfigMapResponse) String() string { +func (x *CreateRepoCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetConfigMapResponse) ProtoMessage() {} +func (*CreateRepoCredentialsResponse) ProtoMessage() {} -func (x *GetConfigMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[109] +func (x *CreateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6655,92 +6522,48 @@ func (x *GetConfigMapResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetConfigMapResponse.ProtoReflect.Descriptor instead. -func (*GetConfigMapResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{109} -} - -func (m *GetConfigMapResponse) GetResult() isGetConfigMapResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetConfigMapResponse) GetConfigMap() *v11.ConfigMap { - if x, ok := x.GetResult().(*GetConfigMapResponse_ConfigMap); ok { - return x.ConfigMap - } - return nil +// Deprecated: Use CreateRepoCredentialsResponse.ProtoReflect.Descriptor instead. +func (*CreateRepoCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{106} } -func (x *GetConfigMapResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetConfigMapResponse_Raw); ok { - return x.Raw +func (x *CreateRepoCredentialsResponse) GetCredentials() *v1.Secret { + if x != nil { + return x.Credentials } return nil } -type isGetConfigMapResponse_Result interface { - isGetConfigMapResponse_Result() -} - -type GetConfigMapResponse_ConfigMap struct { - // config_map is the structured Kubernetes ConfigMap object. - ConfigMap *v11.ConfigMap `protobuf:"bytes,1,opt,name=config_map,json=configMap,proto3,oneof"` -} - -type GetConfigMapResponse_Raw struct { - // raw is the raw YAML representation of the ConfigMap. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` -} - -func (*GetConfigMapResponse_ConfigMap) isGetConfigMapResponse_Result() {} - -func (*GetConfigMapResponse_Raw) isGetConfigMapResponse_Result() {} - -// UpdateConfigMapRequest is the request for updating a project-level, -// system-level, or shared ConfigMap. -type UpdateConfigMapRequest struct { +// DeleteRepoCredentialsRequest is the request for deleting existing repository credentials. +type DeleteRepoCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to update a system-level - // ConfigMap instead of a project-level or shared one. - SystemLevel bool `protobuf:"varint,1,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project containing the ConfigMap to be updated. - // If empty and system_level is false, updates the ConfigMap in the shared - // resources namespace. This value is ignored if system_level is true. - Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the ConfigMap to be updated. - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - // description is a human-readable description of the ConfigMap. - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - // data contains the key-value pairs that make up the ConfigMap. - Data map[string]string `protobuf:"bytes,5,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // replicate, when true, replicates this ConfigMap to all Project namespaces - // by setting the kargo.akuity.io/replicate-to: "*" annotation. - Replicate bool `protobuf:"varint,6,opt,name=replicate,proto3" json:"replicate,omitempty"` + // project is the name of the project containing the credentials. + // If project is left empty, it will default to the "shared resources" namespace. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the credentials to delete. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *UpdateConfigMapRequest) Reset() { - *x = UpdateConfigMapRequest{} +func (x *DeleteRepoCredentialsRequest) Reset() { + *x = DeleteRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[110] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateConfigMapRequest) String() string { +func (x *DeleteRepoCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateConfigMapRequest) ProtoMessage() {} +func (*DeleteRepoCredentialsRequest) ProtoMessage() {} -func (x *UpdateConfigMapRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[110] +func (x *DeleteRepoCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6751,80 +6574,49 @@ func (x *UpdateConfigMapRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateConfigMapRequest.ProtoReflect.Descriptor instead. -func (*UpdateConfigMapRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{110} -} - -func (x *UpdateConfigMapRequest) GetSystemLevel() bool { - if x != nil { - return x.SystemLevel - } - return false +// Deprecated: Use DeleteRepoCredentialsRequest.ProtoReflect.Descriptor instead. +func (*DeleteRepoCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{107} } -func (x *UpdateConfigMapRequest) GetProject() string { +func (x *DeleteRepoCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *UpdateConfigMapRequest) GetName() string { +func (x *DeleteRepoCredentialsRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *UpdateConfigMapRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *UpdateConfigMapRequest) GetData() map[string]string { - if x != nil { - return x.Data - } - return nil -} - -func (x *UpdateConfigMapRequest) GetReplicate() bool { - if x != nil { - return x.Replicate - } - return false -} - -// UpdateConfigMapResponse is the response containing the updated ConfigMap. -type UpdateConfigMapResponse struct { +// DeleteRepoCredentialsResponse is the response returned after deleting repository credentials. +type DeleteRepoCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // config_map is the updated ConfigMap. - ConfigMap *v11.ConfigMap `protobuf:"bytes,1,opt,name=config_map,json=configMap,proto3" json:"config_map,omitempty"` } -func (x *UpdateConfigMapResponse) Reset() { - *x = UpdateConfigMapResponse{} +func (x *DeleteRepoCredentialsResponse) Reset() { + *x = DeleteRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[111] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateConfigMapResponse) String() string { +func (x *DeleteRepoCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateConfigMapResponse) ProtoMessage() {} +func (*DeleteRepoCredentialsResponse) ProtoMessage() {} -func (x *UpdateConfigMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[111] +func (x *DeleteRepoCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6835,59 +6627,42 @@ func (x *UpdateConfigMapResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateConfigMapResponse.ProtoReflect.Descriptor instead. -func (*UpdateConfigMapResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{111} -} - -func (x *UpdateConfigMapResponse) GetConfigMap() *v11.ConfigMap { - if x != nil { - return x.ConfigMap - } - return nil +// Deprecated: Use DeleteRepoCredentialsResponse.ProtoReflect.Descriptor instead. +func (*DeleteRepoCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{108} } -// CreateRepoCredentialsRequest is the request for creating new credentials for accessing external repositories. -type CreateRepoCredentialsRequest struct { +// GetRepoCredentialsRequest is the request for retrieving existing repository credentials. +type GetRepoCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project where the credentials will be stored. + // project is the name of the project containing the credentials. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the credentials. + // name is the name of the credentials to retrieve. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // description is a human-readable description of the credentials. - Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` - // type specifies the credential type (git, helm, image). - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - // repo_url is the URL of the repository or registry these credentials apply to. - RepoUrl string `protobuf:"bytes,4,opt,name=repo_url,json=repoURL,proto3" json:"repo_url,omitempty"` - // repo_url_is_regex indicates whether repo_url should be treated as a regular expression. - RepoUrlIsRegex bool `protobuf:"varint,5,opt,name=repo_url_is_regex,json=repoURLIsRegex,proto3" json:"repo_url_is_regex,omitempty"` - // username is the username for authentication. - Username string `protobuf:"bytes,6,opt,name=username,proto3" json:"username,omitempty"` - // password is the password or token for authentication. - Password string `protobuf:"bytes,7,opt,name=password,proto3" json:"password,omitempty"` + // format specifies the desired response format (structured object or raw YAML). + Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *CreateRepoCredentialsRequest) Reset() { - *x = CreateRepoCredentialsRequest{} +func (x *GetRepoCredentialsRequest) Reset() { + *x = GetRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[112] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateRepoCredentialsRequest) String() string { +func (x *GetRepoCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateRepoCredentialsRequest) ProtoMessage() {} +func (*GetRepoCredentialsRequest) ProtoMessage() {} -func (x *CreateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[112] +func (x *GetRepoCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6898,94 +6673,62 @@ func (x *CreateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateRepoCredentialsRequest.ProtoReflect.Descriptor instead. -func (*CreateRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{112} +// Deprecated: Use GetRepoCredentialsRequest.ProtoReflect.Descriptor instead. +func (*GetRepoCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{109} } -func (x *CreateRepoCredentialsRequest) GetProject() string { +func (x *GetRepoCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *CreateRepoCredentialsRequest) GetName() string { +func (x *GetRepoCredentialsRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *CreateRepoCredentialsRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *CreateRepoCredentialsRequest) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *CreateRepoCredentialsRequest) GetRepoUrl() string { - if x != nil { - return x.RepoUrl - } - return "" -} - -func (x *CreateRepoCredentialsRequest) GetRepoUrlIsRegex() bool { - if x != nil { - return x.RepoUrlIsRegex - } - return false -} - -func (x *CreateRepoCredentialsRequest) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} - -func (x *CreateRepoCredentialsRequest) GetPassword() string { +func (x *GetRepoCredentialsRequest) GetFormat() RawFormat { if x != nil { - return x.Password + return x.Format } - return "" + return RawFormat_RAW_FORMAT_UNSPECIFIED } -// CreateRepoCredentialsResponse contains the newly created repository credentials. -type CreateRepoCredentialsResponse struct { +// GetRepoCredentialsResponse contains the requested repository credentials information. +type GetRepoCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // credentials is the created Kubernetes Secret containing the credentials. - Credentials *v11.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` + // Types that are assignable to Result: + // + // *GetRepoCredentialsResponse_Credentials + // *GetRepoCredentialsResponse_Raw + Result isGetRepoCredentialsResponse_Result `protobuf_oneof:"result"` } -func (x *CreateRepoCredentialsResponse) Reset() { - *x = CreateRepoCredentialsResponse{} +func (x *GetRepoCredentialsResponse) Reset() { + *x = GetRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[113] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateRepoCredentialsResponse) String() string { +func (x *GetRepoCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateRepoCredentialsResponse) ProtoMessage() {} +func (*GetRepoCredentialsResponse) ProtoMessage() {} -func (x *CreateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[113] +func (x *GetRepoCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6996,48 +6739,77 @@ func (x *CreateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateRepoCredentialsResponse.ProtoReflect.Descriptor instead. -func (*CreateRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{113} +// Deprecated: Use GetRepoCredentialsResponse.ProtoReflect.Descriptor instead. +func (*GetRepoCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{110} } -func (x *CreateRepoCredentialsResponse) GetCredentials() *v11.Secret { - if x != nil { +func (m *GetRepoCredentialsResponse) GetResult() isGetRepoCredentialsResponse_Result { + if m != nil { + return m.Result + } + return nil +} + +func (x *GetRepoCredentialsResponse) GetCredentials() *v1.Secret { + if x, ok := x.GetResult().(*GetRepoCredentialsResponse_Credentials); ok { return x.Credentials } return nil } -// DeleteRepoCredentialsRequest is the request for deleting existing repository credentials. -type DeleteRepoCredentialsRequest struct { +func (x *GetRepoCredentialsResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetRepoCredentialsResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetRepoCredentialsResponse_Result interface { + isGetRepoCredentialsResponse_Result() +} + +type GetRepoCredentialsResponse_Credentials struct { + // credentials is the structured Kubernetes Secret containing the credentials. + Credentials *v1.Secret `protobuf:"bytes,1,opt,name=credentials,proto3,oneof"` +} + +type GetRepoCredentialsResponse_Raw struct { + // raw is the raw YAML representation of the credentials. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetRepoCredentialsResponse_Credentials) isGetRepoCredentialsResponse_Result() {} + +func (*GetRepoCredentialsResponse_Raw) isGetRepoCredentialsResponse_Result() {} + +// ListRepoCredentialsRequest is the request for listing all repository credentials in a project. +type ListRepoCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the credentials. - // If project is left empty, it will default to the "shared resources" namespace. + // project is the name of the project whose credentials will be listed. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the credentials to delete. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DeleteRepoCredentialsRequest) Reset() { - *x = DeleteRepoCredentialsRequest{} +func (x *ListRepoCredentialsRequest) Reset() { + *x = ListRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[114] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteRepoCredentialsRequest) String() string { +func (x *ListRepoCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteRepoCredentialsRequest) ProtoMessage() {} +func (*ListRepoCredentialsRequest) ProtoMessage() {} -func (x *DeleteRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[114] +func (x *ListRepoCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7048,49 +6820,45 @@ func (x *DeleteRepoCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteRepoCredentialsRequest.ProtoReflect.Descriptor instead. -func (*DeleteRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{114} +// Deprecated: Use ListRepoCredentialsRequest.ProtoReflect.Descriptor instead. +func (*ListRepoCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{111} } -func (x *DeleteRepoCredentialsRequest) GetProject() string { +func (x *ListRepoCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *DeleteRepoCredentialsRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -// DeleteRepoCredentialsResponse is the response returned after deleting repository credentials. -type DeleteRepoCredentialsResponse struct { +// ListRepoCredentialsResponse contains a list of repository credentials for the specified project. +type ListRepoCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // credentials is the list of Kubernetes Secrets containing the credentials. + Credentials []*v1.Secret `protobuf:"bytes,1,rep,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *DeleteRepoCredentialsResponse) Reset() { - *x = DeleteRepoCredentialsResponse{} +func (x *ListRepoCredentialsResponse) Reset() { + *x = ListRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[115] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteRepoCredentialsResponse) String() string { +func (x *ListRepoCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteRepoCredentialsResponse) ProtoMessage() {} +func (*ListRepoCredentialsResponse) ProtoMessage() {} -func (x *DeleteRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[115] +func (x *ListRepoCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7101,42 +6869,59 @@ func (x *DeleteRepoCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteRepoCredentialsResponse.ProtoReflect.Descriptor instead. -func (*DeleteRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{115} +// Deprecated: Use ListRepoCredentialsResponse.ProtoReflect.Descriptor instead. +func (*ListRepoCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{112} } -// GetRepoCredentialsRequest is the request for retrieving existing repository credentials. -type GetRepoCredentialsRequest struct { +func (x *ListRepoCredentialsResponse) GetCredentials() []*v1.Secret { + if x != nil { + return x.Credentials + } + return nil +} + +// UpdateRepoCredentialsRequest is the request for updating existing repository credentials. +type UpdateRepoCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // project is the name of the project containing the credentials. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the credentials to retrieve. + // name is the name of the credentials to update. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the desired response format (structured object or raw YAML). - Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` + // description is a human-readable description of the credentials. + Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` + // type specifies the credential type (git, helm, image). + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + // repo_url is the URL of the repository or registry these credentials apply to. + RepoUrl string `protobuf:"bytes,4,opt,name=repo_url,json=repoURL,proto3" json:"repo_url,omitempty"` + // repo_url_is_regex indicates whether repo_url should be treated as a regular expression. + RepoUrlIsRegex bool `protobuf:"varint,5,opt,name=repo_url_is_regex,json=repoURLIsRegex,proto3" json:"repo_url_is_regex,omitempty"` + // username is the username for authentication. + Username string `protobuf:"bytes,6,opt,name=username,proto3" json:"username,omitempty"` + // password is the password or token for authentication. + Password string `protobuf:"bytes,7,opt,name=password,proto3" json:"password,omitempty"` } -func (x *GetRepoCredentialsRequest) Reset() { - *x = GetRepoCredentialsRequest{} +func (x *UpdateRepoCredentialsRequest) Reset() { + *x = UpdateRepoCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[116] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetRepoCredentialsRequest) String() string { +func (x *UpdateRepoCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetRepoCredentialsRequest) ProtoMessage() {} +func (*UpdateRepoCredentialsRequest) ProtoMessage() {} -func (x *GetRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[116] +func (x *UpdateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7147,62 +6932,94 @@ func (x *GetRepoCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetRepoCredentialsRequest.ProtoReflect.Descriptor instead. -func (*GetRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{116} +// Deprecated: Use UpdateRepoCredentialsRequest.ProtoReflect.Descriptor instead. +func (*UpdateRepoCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{113} } -func (x *GetRepoCredentialsRequest) GetProject() string { +func (x *UpdateRepoCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *GetRepoCredentialsRequest) GetName() string { +func (x *UpdateRepoCredentialsRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *GetRepoCredentialsRequest) GetFormat() RawFormat { +func (x *UpdateRepoCredentialsRequest) GetDescription() string { if x != nil { - return x.Format + return x.Description } - return RawFormat_RAW_FORMAT_UNSPECIFIED + return "" } -// GetRepoCredentialsResponse contains the requested repository credentials information. -type GetRepoCredentialsResponse struct { +func (x *UpdateRepoCredentialsRequest) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *UpdateRepoCredentialsRequest) GetRepoUrl() string { + if x != nil { + return x.RepoUrl + } + return "" +} + +func (x *UpdateRepoCredentialsRequest) GetRepoUrlIsRegex() bool { + if x != nil { + return x.RepoUrlIsRegex + } + return false +} + +func (x *UpdateRepoCredentialsRequest) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *UpdateRepoCredentialsRequest) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +// UpdateRepoCredentialsResponse contains the updated repository credentials information. +type UpdateRepoCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Result: - // - // *GetRepoCredentialsResponse_Credentials - // *GetRepoCredentialsResponse_Raw - Result isGetRepoCredentialsResponse_Result `protobuf_oneof:"result"` + // credentials is the updated Kubernetes Secret containing the credentials. + Credentials *v1.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *GetRepoCredentialsResponse) Reset() { - *x = GetRepoCredentialsResponse{} +func (x *UpdateRepoCredentialsResponse) Reset() { + *x = UpdateRepoCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[117] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetRepoCredentialsResponse) String() string { +func (x *UpdateRepoCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetRepoCredentialsResponse) ProtoMessage() {} +func (*UpdateRepoCredentialsResponse) ProtoMessage() {} -func (x *GetRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[117] +func (x *UpdateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7213,77 +7030,51 @@ func (x *GetRepoCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetRepoCredentialsResponse.ProtoReflect.Descriptor instead. -func (*GetRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{117} -} - -func (m *GetRepoCredentialsResponse) GetResult() isGetRepoCredentialsResponse_Result { - if m != nil { - return m.Result - } - return nil +// Deprecated: Use UpdateRepoCredentialsResponse.ProtoReflect.Descriptor instead. +func (*UpdateRepoCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{114} } -func (x *GetRepoCredentialsResponse) GetCredentials() *v11.Secret { - if x, ok := x.GetResult().(*GetRepoCredentialsResponse_Credentials); ok { +func (x *UpdateRepoCredentialsResponse) GetCredentials() *v1.Secret { + if x != nil { return x.Credentials } return nil } -func (x *GetRepoCredentialsResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetRepoCredentialsResponse_Raw); ok { - return x.Raw - } - return nil -} - -type isGetRepoCredentialsResponse_Result interface { - isGetRepoCredentialsResponse_Result() -} - -type GetRepoCredentialsResponse_Credentials struct { - // credentials is the structured Kubernetes Secret containing the credentials. - Credentials *v11.Secret `protobuf:"bytes,1,opt,name=credentials,proto3,oneof"` -} - -type GetRepoCredentialsResponse_Raw struct { - // raw is the raw YAML representation of the credentials. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` -} - -func (*GetRepoCredentialsResponse_Credentials) isGetRepoCredentialsResponse_Result() {} - -func (*GetRepoCredentialsResponse_Raw) isGetRepoCredentialsResponse_Result() {} - -// ListRepoCredentialsRequest is the request for listing all repository credentials in a project. -type ListRepoCredentialsRequest struct { +// ListGenericCredentialsRequest is the request for listing all generic +// credentials in a project, shared namespace, or system namespace. +type ListGenericCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose credentials will be listed. + // system_level indicates whether the request is to list generic credentials + // from the system-level namespace instead of a project-level or shared namespace. + SystemLevel bool `protobuf:"varint,2,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project whose generic credentials will be listed. + // If empty and system_level is false, lists generic credentials from the shared resources namespace. + // This value is ignored if system_level is true. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *ListRepoCredentialsRequest) Reset() { - *x = ListRepoCredentialsRequest{} +func (x *ListGenericCredentialsRequest) Reset() { + *x = ListGenericCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[118] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListRepoCredentialsRequest) String() string { +func (x *ListGenericCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListRepoCredentialsRequest) ProtoMessage() {} +func (*ListGenericCredentialsRequest) ProtoMessage() {} -func (x *ListRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[118] +func (x *ListGenericCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7294,45 +7085,52 @@ func (x *ListRepoCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListRepoCredentialsRequest.ProtoReflect.Descriptor instead. -func (*ListRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{118} +// Deprecated: Use ListGenericCredentialsRequest.ProtoReflect.Descriptor instead. +func (*ListGenericCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{115} } -func (x *ListRepoCredentialsRequest) GetProject() string { +func (x *ListGenericCredentialsRequest) GetSystemLevel() bool { + if x != nil { + return x.SystemLevel + } + return false +} + +func (x *ListGenericCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -// ListRepoCredentialsResponse contains a list of repository credentials for the specified project. -type ListRepoCredentialsResponse struct { +// ListGenericCredentialsResponse contains a list of generic credentials for the specified project. +type ListGenericCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // credentials is the list of Kubernetes Secrets containing the credentials. - Credentials []*v11.Secret `protobuf:"bytes,1,rep,name=credentials,proto3" json:"credentials,omitempty"` + // credentials is the list of Kubernetes Secrets containing generic credentials within the project. + Credentials []*v1.Secret `protobuf:"bytes,1,rep,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *ListRepoCredentialsResponse) Reset() { - *x = ListRepoCredentialsResponse{} +func (x *ListGenericCredentialsResponse) Reset() { + *x = ListGenericCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[119] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListRepoCredentialsResponse) String() string { +func (x *ListGenericCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListRepoCredentialsResponse) ProtoMessage() {} +func (*ListGenericCredentialsResponse) ProtoMessage() {} -func (x *ListRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[119] +func (x *ListGenericCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7343,59 +7141,60 @@ func (x *ListRepoCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListRepoCredentialsResponse.ProtoReflect.Descriptor instead. -func (*ListRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{119} +// Deprecated: Use ListGenericCredentialsResponse.ProtoReflect.Descriptor instead. +func (*ListGenericCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{116} } -func (x *ListRepoCredentialsResponse) GetCredentials() []*v11.Secret { +func (x *ListGenericCredentialsResponse) GetCredentials() []*v1.Secret { if x != nil { return x.Credentials } return nil } -// UpdateRepoCredentialsRequest is the request for updating existing repository credentials. -type UpdateRepoCredentialsRequest struct { +// CreateGenericCredentialsRequest is the request for creating new generic +// credentials within a project, shared namespace, or system namespace. +type CreateGenericCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the credentials. + // system_level indicates whether the request is to create generic credentials + // in the system-level namespace instead of a project-level or shared namespace. + SystemLevel bool `protobuf:"varint,6,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project where the generic credentials will be + // created. If empty and system_level is false, creates generic credentials in the shared resources + // namespace. This value is ignored if system_level is true. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the credentials to update. + // name is the name of the generic credentials to create. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // description is a human-readable description of the credentials. - Description string `protobuf:"bytes,8,opt,name=description,proto3" json:"description,omitempty"` - // type specifies the credential type (git, helm, image). - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - // repo_url is the URL of the repository or registry these credentials apply to. - RepoUrl string `protobuf:"bytes,4,opt,name=repo_url,json=repoURL,proto3" json:"repo_url,omitempty"` - // repo_url_is_regex indicates whether repo_url should be treated as a regular expression. - RepoUrlIsRegex bool `protobuf:"varint,5,opt,name=repo_url_is_regex,json=repoURLIsRegex,proto3" json:"repo_url_is_regex,omitempty"` - // username is the username for authentication. - Username string `protobuf:"bytes,6,opt,name=username,proto3" json:"username,omitempty"` - // password is the password or token for authentication. - Password string `protobuf:"bytes,7,opt,name=password,proto3" json:"password,omitempty"` + // description is a human-readable description of the generic credentials. + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // data contains the key-value pairs that make up the generic credentials data. + Data map[string]string `protobuf:"bytes,4,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // replicate, when true, replicates these credentials to all Project + // namespaces by setting the kargo.akuity.io/replicate-to: "*" annotation. + Replicate bool `protobuf:"varint,5,opt,name=replicate,proto3" json:"replicate,omitempty"` } -func (x *UpdateRepoCredentialsRequest) Reset() { - *x = UpdateRepoCredentialsRequest{} +func (x *CreateGenericCredentialsRequest) Reset() { + *x = CreateGenericCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[120] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateRepoCredentialsRequest) String() string { +func (x *CreateGenericCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateRepoCredentialsRequest) ProtoMessage() {} +func (*CreateGenericCredentialsRequest) ProtoMessage() {} -func (x *UpdateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[120] +func (x *CreateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7406,94 +7205,80 @@ func (x *UpdateRepoCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateRepoCredentialsRequest.ProtoReflect.Descriptor instead. -func (*UpdateRepoCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{120} +// Deprecated: Use CreateGenericCredentialsRequest.ProtoReflect.Descriptor instead. +func (*CreateGenericCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{117} } -func (x *UpdateRepoCredentialsRequest) GetProject() string { +func (x *CreateGenericCredentialsRequest) GetSystemLevel() bool { + if x != nil { + return x.SystemLevel + } + return false +} + +func (x *CreateGenericCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *UpdateRepoCredentialsRequest) GetName() string { +func (x *CreateGenericCredentialsRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *UpdateRepoCredentialsRequest) GetDescription() string { +func (x *CreateGenericCredentialsRequest) GetDescription() string { if x != nil { return x.Description } return "" } -func (x *UpdateRepoCredentialsRequest) GetType() string { +func (x *CreateGenericCredentialsRequest) GetData() map[string]string { if x != nil { - return x.Type + return x.Data } - return "" + return nil } -func (x *UpdateRepoCredentialsRequest) GetRepoUrl() string { +func (x *CreateGenericCredentialsRequest) GetReplicate() bool { if x != nil { - return x.RepoUrl + return x.Replicate } - return "" + return false } -func (x *UpdateRepoCredentialsRequest) GetRepoUrlIsRegex() bool { - if x != nil { - return x.RepoUrlIsRegex - } - return false -} - -func (x *UpdateRepoCredentialsRequest) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} - -func (x *UpdateRepoCredentialsRequest) GetPassword() string { - if x != nil { - return x.Password - } - return "" -} - -// UpdateRepoCredentialsResponse contains the updated repository credentials information. -type UpdateRepoCredentialsResponse struct { +// CreateGenericCredentialsResponse contains the newly created generic credentials. +type CreateGenericCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // credentials is the updated Kubernetes Secret containing the credentials. - Credentials *v11.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` + // credentials is the created Kubernetes Secret containing generic credentials within the project. + Credentials *v1.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *UpdateRepoCredentialsResponse) Reset() { - *x = UpdateRepoCredentialsResponse{} +func (x *CreateGenericCredentialsResponse) Reset() { + *x = CreateGenericCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[121] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateRepoCredentialsResponse) String() string { +func (x *CreateGenericCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateRepoCredentialsResponse) ProtoMessage() {} +func (*CreateGenericCredentialsResponse) ProtoMessage() {} -func (x *UpdateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[121] +func (x *CreateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7504,51 +7289,59 @@ func (x *UpdateRepoCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateRepoCredentialsResponse.ProtoReflect.Descriptor instead. -func (*UpdateRepoCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{121} +// Deprecated: Use CreateGenericCredentialsResponse.ProtoReflect.Descriptor instead. +func (*CreateGenericCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{118} } -func (x *UpdateRepoCredentialsResponse) GetCredentials() *v11.Secret { +func (x *CreateGenericCredentialsResponse) GetCredentials() *v1.Secret { if x != nil { return x.Credentials } return nil } -// ListGenericCredentialsRequest is the request for listing all generic -// credentials in a project, shared namespace, or system namespace. -type ListGenericCredentialsRequest struct { +// UpdateGenericCredentialsRequest is the request for updating existing generic credentials. +type UpdateGenericCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to list generic credentials - // from the system-level namespace instead of a project-level or shared namespace. - SystemLevel bool `protobuf:"varint,2,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project whose generic credentials will be listed. - // If empty and system_level is false, lists generic credentials from the shared resources namespace. + // system_level indicates whether the request is to update generic credentials + // in the system-level namespace instead of a project-level or shared namespace. + SystemLevel bool `protobuf:"varint,6,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project containing the generic credentials. If + // empty and system_level is false, updates generic credentials in the shared resources namespace. // This value is ignored if system_level is true. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the generic credentials to update. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // description is a human-readable description of the generic credentials. + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // data contains the key-value pairs that make up the generic credentials data. + Data map[string]string `protobuf:"bytes,4,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // replicate, when true, replicates these credentials to all Project + // namespaces by setting the kargo.akuity.io/replicate-to: "*" annotation. + Replicate bool `protobuf:"varint,5,opt,name=replicate,proto3" json:"replicate,omitempty"` } -func (x *ListGenericCredentialsRequest) Reset() { - *x = ListGenericCredentialsRequest{} +func (x *UpdateGenericCredentialsRequest) Reset() { + *x = UpdateGenericCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[122] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListGenericCredentialsRequest) String() string { +func (x *UpdateGenericCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListGenericCredentialsRequest) ProtoMessage() {} +func (*UpdateGenericCredentialsRequest) ProtoMessage() {} -func (x *ListGenericCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[122] +func (x *UpdateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7559,52 +7352,80 @@ func (x *ListGenericCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListGenericCredentialsRequest.ProtoReflect.Descriptor instead. -func (*ListGenericCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{122} +// Deprecated: Use UpdateGenericCredentialsRequest.ProtoReflect.Descriptor instead. +func (*UpdateGenericCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{119} } -func (x *ListGenericCredentialsRequest) GetSystemLevel() bool { +func (x *UpdateGenericCredentialsRequest) GetSystemLevel() bool { if x != nil { return x.SystemLevel } return false } -func (x *ListGenericCredentialsRequest) GetProject() string { +func (x *UpdateGenericCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -// ListGenericCredentialsResponse contains a list of generic credentials for the specified project. -type ListGenericCredentialsResponse struct { +func (x *UpdateGenericCredentialsRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UpdateGenericCredentialsRequest) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *UpdateGenericCredentialsRequest) GetData() map[string]string { + if x != nil { + return x.Data + } + return nil +} + +func (x *UpdateGenericCredentialsRequest) GetReplicate() bool { + if x != nil { + return x.Replicate + } + return false +} + +// UpdateGenericCredentialsResponse contains the updated generic credentials information. +type UpdateGenericCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // credentials is the list of Kubernetes Secrets containing generic credentials within the project. - Credentials []*v11.Secret `protobuf:"bytes,1,rep,name=credentials,proto3" json:"credentials,omitempty"` + // credentials is the updated Kubernetes Secret containing generic credentials within the project. + Credentials *v1.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *ListGenericCredentialsResponse) Reset() { - *x = ListGenericCredentialsResponse{} +func (x *UpdateGenericCredentialsResponse) Reset() { + *x = UpdateGenericCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[123] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListGenericCredentialsResponse) String() string { +func (x *UpdateGenericCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListGenericCredentialsResponse) ProtoMessage() {} +func (*UpdateGenericCredentialsResponse) ProtoMessage() {} -func (x *ListGenericCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[123] +func (x *UpdateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7615,60 +7436,53 @@ func (x *ListGenericCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListGenericCredentialsResponse.ProtoReflect.Descriptor instead. -func (*ListGenericCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{123} +// Deprecated: Use UpdateGenericCredentialsResponse.ProtoReflect.Descriptor instead. +func (*UpdateGenericCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{120} } -func (x *ListGenericCredentialsResponse) GetCredentials() []*v11.Secret { +func (x *UpdateGenericCredentialsResponse) GetCredentials() *v1.Secret { if x != nil { return x.Credentials } return nil } -// CreateGenericCredentialsRequest is the request for creating new generic -// credentials within a project, shared namespace, or system namespace. -type CreateGenericCredentialsRequest struct { +// DeleteGenericCredentialsRequest is the request for deleting generic +// credentials. +type DeleteGenericCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to create generic credentials - // in the system-level namespace instead of a project-level or shared namespace. - SystemLevel bool `protobuf:"varint,6,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project where the generic credentials will be - // created. If empty and system_level is false, creates generic credentials in the shared resources - // namespace. This value is ignored if system_level is true. + // system_level indicates whether the request is to delete generic credentials + // from the system-level namespace instead of a project-level or shared namespace. + SystemLevel bool `protobuf:"varint,3,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` + // project is the name of the project containing the generic credentials. If + // empty and system_level is false, deletes generic credentials from the shared resources namespace. + // This value is ignored if system_level is true. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the generic credentials to create. + // name is the name of the generic credentials to delete. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // description is a human-readable description of the generic credentials. - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // data contains the key-value pairs that make up the generic credentials data. - Data map[string]string `protobuf:"bytes,4,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // replicate, when true, replicates these credentials to all Project - // namespaces by setting the kargo.akuity.io/replicate-to: "*" annotation. - Replicate bool `protobuf:"varint,5,opt,name=replicate,proto3" json:"replicate,omitempty"` } -func (x *CreateGenericCredentialsRequest) Reset() { - *x = CreateGenericCredentialsRequest{} +func (x *DeleteGenericCredentialsRequest) Reset() { + *x = DeleteGenericCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[124] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateGenericCredentialsRequest) String() string { +func (x *DeleteGenericCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateGenericCredentialsRequest) ProtoMessage() {} +func (*DeleteGenericCredentialsRequest) ProtoMessage() {} -func (x *CreateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[124] +func (x *DeleteGenericCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7679,80 +7493,56 @@ func (x *CreateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateGenericCredentialsRequest.ProtoReflect.Descriptor instead. -func (*CreateGenericCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{124} +// Deprecated: Use DeleteGenericCredentialsRequest.ProtoReflect.Descriptor instead. +func (*DeleteGenericCredentialsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{121} } -func (x *CreateGenericCredentialsRequest) GetSystemLevel() bool { +func (x *DeleteGenericCredentialsRequest) GetSystemLevel() bool { if x != nil { return x.SystemLevel } return false } -func (x *CreateGenericCredentialsRequest) GetProject() string { +func (x *DeleteGenericCredentialsRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *CreateGenericCredentialsRequest) GetName() string { +func (x *DeleteGenericCredentialsRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *CreateGenericCredentialsRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *CreateGenericCredentialsRequest) GetData() map[string]string { - if x != nil { - return x.Data - } - return nil -} - -func (x *CreateGenericCredentialsRequest) GetReplicate() bool { - if x != nil { - return x.Replicate - } - return false -} - -// CreateGenericCredentialsResponse contains the newly created generic credentials. -type CreateGenericCredentialsResponse struct { +// DeleteGenericCredentialsResponse is the response returned after deleting generic credentials. +type DeleteGenericCredentialsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // credentials is the created Kubernetes Secret containing generic credentials within the project. - Credentials *v11.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` } -func (x *CreateGenericCredentialsResponse) Reset() { - *x = CreateGenericCredentialsResponse{} +func (x *DeleteGenericCredentialsResponse) Reset() { + *x = DeleteGenericCredentialsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[125] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CreateGenericCredentialsResponse) String() string { +func (x *DeleteGenericCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateGenericCredentialsResponse) ProtoMessage() {} +func (*DeleteGenericCredentialsResponse) ProtoMessage() {} -func (x *CreateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[125] +func (x *DeleteGenericCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7763,59 +7553,38 @@ func (x *CreateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateGenericCredentialsResponse.ProtoReflect.Descriptor instead. -func (*CreateGenericCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{125} -} - -func (x *CreateGenericCredentialsResponse) GetCredentials() *v11.Secret { - if x != nil { - return x.Credentials - } - return nil +// Deprecated: Use DeleteGenericCredentialsResponse.ProtoReflect.Descriptor instead. +func (*DeleteGenericCredentialsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{122} } -// UpdateGenericCredentialsRequest is the request for updating existing generic credentials. -type UpdateGenericCredentialsRequest struct { +// ListAnalysisTemplatesRequest is the request for listing all analysis templates in a project. +type ListAnalysisTemplatesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to update generic credentials - // in the system-level namespace instead of a project-level or shared namespace. - SystemLevel bool `protobuf:"varint,6,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project containing the generic credentials. If - // empty and system_level is false, updates generic credentials in the shared resources namespace. - // This value is ignored if system_level is true. + // project is the name of the project whose analysis templates will be listed. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the generic credentials to update. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // description is a human-readable description of the generic credentials. - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // data contains the key-value pairs that make up the generic credentials data. - Data map[string]string `protobuf:"bytes,4,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // replicate, when true, replicates these credentials to all Project - // namespaces by setting the kargo.akuity.io/replicate-to: "*" annotation. - Replicate bool `protobuf:"varint,5,opt,name=replicate,proto3" json:"replicate,omitempty"` } -func (x *UpdateGenericCredentialsRequest) Reset() { - *x = UpdateGenericCredentialsRequest{} +func (x *ListAnalysisTemplatesRequest) Reset() { + *x = ListAnalysisTemplatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[126] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateGenericCredentialsRequest) String() string { +func (x *ListAnalysisTemplatesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateGenericCredentialsRequest) ProtoMessage() {} +func (*ListAnalysisTemplatesRequest) ProtoMessage() {} -func (x *UpdateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[126] +func (x *ListAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7826,80 +7595,45 @@ func (x *UpdateGenericCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateGenericCredentialsRequest.ProtoReflect.Descriptor instead. -func (*UpdateGenericCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{126} -} - -func (x *UpdateGenericCredentialsRequest) GetSystemLevel() bool { - if x != nil { - return x.SystemLevel - } - return false +// Deprecated: Use ListAnalysisTemplatesRequest.ProtoReflect.Descriptor instead. +func (*ListAnalysisTemplatesRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{123} } -func (x *UpdateGenericCredentialsRequest) GetProject() string { +func (x *ListAnalysisTemplatesRequest) GetProject() string { if x != nil { return x.Project } return "" } -func (x *UpdateGenericCredentialsRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *UpdateGenericCredentialsRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *UpdateGenericCredentialsRequest) GetData() map[string]string { - if x != nil { - return x.Data - } - return nil -} - -func (x *UpdateGenericCredentialsRequest) GetReplicate() bool { - if x != nil { - return x.Replicate - } - return false -} - -// UpdateGenericCredentialsResponse contains the updated generic credentials information. -type UpdateGenericCredentialsResponse struct { +// ListAnalysisTemplatesResponse contains a list of analysis templates for the specified project. +type ListAnalysisTemplatesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // credentials is the updated Kubernetes Secret containing generic credentials within the project. - Credentials *v11.Secret `protobuf:"bytes,1,opt,name=credentials,proto3" json:"credentials,omitempty"` + // analysis_templates is the list of AnalysisTemplate resources within the project. + AnalysisTemplates []*v1alpha11.AnalysisTemplate `protobuf:"bytes,1,rep,name=analysis_templates,json=analysisTemplates,proto3" json:"analysis_templates,omitempty"` } -func (x *UpdateGenericCredentialsResponse) Reset() { - *x = UpdateGenericCredentialsResponse{} +func (x *ListAnalysisTemplatesResponse) Reset() { + *x = ListAnalysisTemplatesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[127] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateGenericCredentialsResponse) String() string { +func (x *ListAnalysisTemplatesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateGenericCredentialsResponse) ProtoMessage() {} +func (*ListAnalysisTemplatesResponse) ProtoMessage() {} -func (x *UpdateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[127] +func (x *ListAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7910,53 +7644,49 @@ func (x *UpdateGenericCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateGenericCredentialsResponse.ProtoReflect.Descriptor instead. -func (*UpdateGenericCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{127} +// Deprecated: Use ListAnalysisTemplatesResponse.ProtoReflect.Descriptor instead. +func (*ListAnalysisTemplatesResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{124} } -func (x *UpdateGenericCredentialsResponse) GetCredentials() *v11.Secret { +func (x *ListAnalysisTemplatesResponse) GetAnalysisTemplates() []*v1alpha11.AnalysisTemplate { if x != nil { - return x.Credentials + return x.AnalysisTemplates } return nil } -// DeleteGenericCredentialsRequest is the request for deleting generic -// credentials. -type DeleteGenericCredentialsRequest struct { +// GetAnalysisTemplateRequest is the request for retrieving a specific analysis template. +type GetAnalysisTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // system_level indicates whether the request is to delete generic credentials - // from the system-level namespace instead of a project-level or shared namespace. - SystemLevel bool `protobuf:"varint,3,opt,name=system_level,json=systemLevel,proto3" json:"system_level,omitempty"` - // project is the name of the project containing the generic credentials. If - // empty and system_level is false, deletes generic credentials from the shared resources namespace. - // This value is ignored if system_level is true. + // project is the name of the project containing the analysis template. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the generic credentials to delete. + // name is the name of the analysis template to retrieve. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the desired response format (structured object or raw YAML). + Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *DeleteGenericCredentialsRequest) Reset() { - *x = DeleteGenericCredentialsRequest{} +func (x *GetAnalysisTemplateRequest) Reset() { + *x = GetAnalysisTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[128] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteGenericCredentialsRequest) String() string { +func (x *GetAnalysisTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteGenericCredentialsRequest) ProtoMessage() {} +func (*GetAnalysisTemplateRequest) ProtoMessage() {} -func (x *DeleteGenericCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[128] +func (x *GetAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7967,56 +7697,62 @@ func (x *DeleteGenericCredentialsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteGenericCredentialsRequest.ProtoReflect.Descriptor instead. -func (*DeleteGenericCredentialsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{128} +// Deprecated: Use GetAnalysisTemplateRequest.ProtoReflect.Descriptor instead. +func (*GetAnalysisTemplateRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{125} } -func (x *DeleteGenericCredentialsRequest) GetSystemLevel() bool { +func (x *GetAnalysisTemplateRequest) GetProject() string { if x != nil { - return x.SystemLevel + return x.Project } - return false + return "" } -func (x *DeleteGenericCredentialsRequest) GetProject() string { +func (x *GetAnalysisTemplateRequest) GetName() string { if x != nil { - return x.Project + return x.Name } return "" } -func (x *DeleteGenericCredentialsRequest) GetName() string { +func (x *GetAnalysisTemplateRequest) GetFormat() RawFormat { if x != nil { - return x.Name + return x.Format } - return "" + return RawFormat_RAW_FORMAT_UNSPECIFIED } -// DeleteGenericCredentialsResponse is the response returned after deleting generic credentials. -type DeleteGenericCredentialsResponse struct { +// GetAnalysisTemplateResponse contains the requested analysis template information. +type GetAnalysisTemplateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Types that are assignable to Result: + // + // *GetAnalysisTemplateResponse_AnalysisTemplate + // *GetAnalysisTemplateResponse_Raw + Result isGetAnalysisTemplateResponse_Result `protobuf_oneof:"result"` } -func (x *DeleteGenericCredentialsResponse) Reset() { - *x = DeleteGenericCredentialsResponse{} +func (x *GetAnalysisTemplateResponse) Reset() { + *x = GetAnalysisTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[129] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteGenericCredentialsResponse) String() string { +func (x *GetAnalysisTemplateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteGenericCredentialsResponse) ProtoMessage() {} +func (*GetAnalysisTemplateResponse) ProtoMessage() {} -func (x *DeleteGenericCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[129] +func (x *GetAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8027,38 +7763,79 @@ func (x *DeleteGenericCredentialsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteGenericCredentialsResponse.ProtoReflect.Descriptor instead. -func (*DeleteGenericCredentialsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{129} +// Deprecated: Use GetAnalysisTemplateResponse.ProtoReflect.Descriptor instead. +func (*GetAnalysisTemplateResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{126} } -// ListAnalysisTemplatesRequest is the request for listing all analysis templates in a project. -type ListAnalysisTemplatesRequest struct { +func (m *GetAnalysisTemplateResponse) GetResult() isGetAnalysisTemplateResponse_Result { + if m != nil { + return m.Result + } + return nil +} + +func (x *GetAnalysisTemplateResponse) GetAnalysisTemplate() *v1alpha11.AnalysisTemplate { + if x, ok := x.GetResult().(*GetAnalysisTemplateResponse_AnalysisTemplate); ok { + return x.AnalysisTemplate + } + return nil +} + +func (x *GetAnalysisTemplateResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetAnalysisTemplateResponse_Raw); ok { + return x.Raw + } + return nil +} + +type isGetAnalysisTemplateResponse_Result interface { + isGetAnalysisTemplateResponse_Result() +} + +type GetAnalysisTemplateResponse_AnalysisTemplate struct { + // analysis_template is the structured AnalysisTemplate resource. + AnalysisTemplate *v1alpha11.AnalysisTemplate `protobuf:"bytes,1,opt,name=analysis_template,json=analysisTemplate,proto3,oneof"` +} + +type GetAnalysisTemplateResponse_Raw struct { + // raw is the raw YAML representation of the analysis template. + Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` +} + +func (*GetAnalysisTemplateResponse_AnalysisTemplate) isGetAnalysisTemplateResponse_Result() {} + +func (*GetAnalysisTemplateResponse_Raw) isGetAnalysisTemplateResponse_Result() {} + +// DeleteAnalysisTemplateRequest is the request for deleting an analysis template. +type DeleteAnalysisTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project whose analysis templates will be listed. + // project is the name of the project containing the analysis template. Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` + // name is the name of the analysis template to delete. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListAnalysisTemplatesRequest) Reset() { - *x = ListAnalysisTemplatesRequest{} +func (x *DeleteAnalysisTemplateRequest) Reset() { + *x = DeleteAnalysisTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[130] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListAnalysisTemplatesRequest) String() string { +func (x *DeleteAnalysisTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAnalysisTemplatesRequest) ProtoMessage() {} +func (*DeleteAnalysisTemplateRequest) ProtoMessage() {} -func (x *ListAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[130] +func (x *DeleteAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8069,45 +7846,88 @@ func (x *ListAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAnalysisTemplatesRequest.ProtoReflect.Descriptor instead. -func (*ListAnalysisTemplatesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{130} +// Deprecated: Use DeleteAnalysisTemplateRequest.ProtoReflect.Descriptor instead. +func (*DeleteAnalysisTemplateRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{127} } -func (x *ListAnalysisTemplatesRequest) GetProject() string { +func (x *DeleteAnalysisTemplateRequest) GetProject() string { if x != nil { return x.Project } return "" } -// ListAnalysisTemplatesResponse contains a list of analysis templates for the specified project. -type ListAnalysisTemplatesResponse struct { +func (x *DeleteAnalysisTemplateRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// DeleteAnalysisTemplateResponse is the response returned after deleting an analysis template. +type DeleteAnalysisTemplateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields +} - // analysis_templates is the list of AnalysisTemplate resources within the project. - AnalysisTemplates []*v1alpha11.AnalysisTemplate `protobuf:"bytes,1,rep,name=analysis_templates,json=analysisTemplates,proto3" json:"analysis_templates,omitempty"` +func (x *DeleteAnalysisTemplateResponse) Reset() { + *x = DeleteAnalysisTemplateResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (x *ListAnalysisTemplatesResponse) Reset() { - *x = ListAnalysisTemplatesResponse{} +func (x *DeleteAnalysisTemplateResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteAnalysisTemplateResponse) ProtoMessage() {} + +func (x *DeleteAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[128] + 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 DeleteAnalysisTemplateResponse.ProtoReflect.Descriptor instead. +func (*DeleteAnalysisTemplateResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{128} +} + +// ListClusterAnalysisTemplatesRequest is the request for listing all cluster-level analysis templates. +type ListClusterAnalysisTemplatesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListClusterAnalysisTemplatesRequest) Reset() { + *x = ListClusterAnalysisTemplatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[131] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListAnalysisTemplatesResponse) String() string { +func (x *ListClusterAnalysisTemplatesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAnalysisTemplatesResponse) ProtoMessage() {} +func (*ListClusterAnalysisTemplatesRequest) ProtoMessage() {} -func (x *ListAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[131] +func (x *ListClusterAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8118,49 +7938,89 @@ func (x *ListAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAnalysisTemplatesResponse.ProtoReflect.Descriptor instead. -func (*ListAnalysisTemplatesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{131} +// Deprecated: Use ListClusterAnalysisTemplatesRequest.ProtoReflect.Descriptor instead. +func (*ListClusterAnalysisTemplatesRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{129} } -func (x *ListAnalysisTemplatesResponse) GetAnalysisTemplates() []*v1alpha11.AnalysisTemplate { +// ListClusterAnalysisTemplatesResponse contains a list of cluster-level analysis templates. +type ListClusterAnalysisTemplatesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // cluster_analysis_templates is the list of ClusterAnalysisTemplate resources. + ClusterAnalysisTemplates []*v1alpha11.ClusterAnalysisTemplate `protobuf:"bytes,1,rep,name=cluster_analysis_templates,json=clusteranalysisTemplates,proto3" json:"cluster_analysis_templates,omitempty"` +} + +func (x *ListClusterAnalysisTemplatesResponse) Reset() { + *x = ListClusterAnalysisTemplatesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListClusterAnalysisTemplatesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListClusterAnalysisTemplatesResponse) ProtoMessage() {} + +func (x *ListClusterAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[130] + 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 ListClusterAnalysisTemplatesResponse.ProtoReflect.Descriptor instead. +func (*ListClusterAnalysisTemplatesResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{130} +} + +func (x *ListClusterAnalysisTemplatesResponse) GetClusterAnalysisTemplates() []*v1alpha11.ClusterAnalysisTemplate { if x != nil { - return x.AnalysisTemplates + return x.ClusterAnalysisTemplates } return nil } -// GetAnalysisTemplateRequest is the request for retrieving a specific analysis template. -type GetAnalysisTemplateRequest struct { +// GetClusterAnalysisTemplateRequest is the request for retrieving a specific cluster analysis template. +type GetClusterAnalysisTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the analysis template. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the analysis template to retrieve. + // name is the name of the cluster analysis template to retrieve. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // format specifies the desired response format (structured object or raw YAML). Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *GetAnalysisTemplateRequest) Reset() { - *x = GetAnalysisTemplateRequest{} +func (x *GetClusterAnalysisTemplateRequest) Reset() { + *x = GetClusterAnalysisTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[132] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetAnalysisTemplateRequest) String() string { +func (x *GetClusterAnalysisTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAnalysisTemplateRequest) ProtoMessage() {} +func (*GetClusterAnalysisTemplateRequest) ProtoMessage() {} -func (x *GetAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[132] +func (x *GetClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8171,62 +8031,55 @@ func (x *GetAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAnalysisTemplateRequest.ProtoReflect.Descriptor instead. -func (*GetAnalysisTemplateRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{132} -} - -func (x *GetAnalysisTemplateRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" +// Deprecated: Use GetClusterAnalysisTemplateRequest.ProtoReflect.Descriptor instead. +func (*GetClusterAnalysisTemplateRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{131} } -func (x *GetAnalysisTemplateRequest) GetName() string { +func (x *GetClusterAnalysisTemplateRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *GetAnalysisTemplateRequest) GetFormat() RawFormat { +func (x *GetClusterAnalysisTemplateRequest) GetFormat() RawFormat { if x != nil { return x.Format } return RawFormat_RAW_FORMAT_UNSPECIFIED } -// GetAnalysisTemplateResponse contains the requested analysis template information. -type GetAnalysisTemplateResponse struct { +// GetClusterAnalysisTemplateResponse contains the requested cluster analysis template information. +type GetClusterAnalysisTemplateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Result: // - // *GetAnalysisTemplateResponse_AnalysisTemplate - // *GetAnalysisTemplateResponse_Raw - Result isGetAnalysisTemplateResponse_Result `protobuf_oneof:"result"` + // *GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate + // *GetClusterAnalysisTemplateResponse_Raw + Result isGetClusterAnalysisTemplateResponse_Result `protobuf_oneof:"result"` } -func (x *GetAnalysisTemplateResponse) Reset() { - *x = GetAnalysisTemplateResponse{} +func (x *GetClusterAnalysisTemplateResponse) Reset() { + *x = GetClusterAnalysisTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[133] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetAnalysisTemplateResponse) String() string { +func (x *GetClusterAnalysisTemplateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAnalysisTemplateResponse) ProtoMessage() {} +func (*GetClusterAnalysisTemplateResponse) ProtoMessage() {} -func (x *GetAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[133] +func (x *GetClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8237,79 +8090,78 @@ func (x *GetAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAnalysisTemplateResponse.ProtoReflect.Descriptor instead. -func (*GetAnalysisTemplateResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{133} +// Deprecated: Use GetClusterAnalysisTemplateResponse.ProtoReflect.Descriptor instead. +func (*GetClusterAnalysisTemplateResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{132} } -func (m *GetAnalysisTemplateResponse) GetResult() isGetAnalysisTemplateResponse_Result { +func (m *GetClusterAnalysisTemplateResponse) GetResult() isGetClusterAnalysisTemplateResponse_Result { if m != nil { return m.Result } return nil } -func (x *GetAnalysisTemplateResponse) GetAnalysisTemplate() *v1alpha11.AnalysisTemplate { - if x, ok := x.GetResult().(*GetAnalysisTemplateResponse_AnalysisTemplate); ok { - return x.AnalysisTemplate +func (x *GetClusterAnalysisTemplateResponse) GetClusterAnalysisTemplate() *v1alpha11.ClusterAnalysisTemplate { + if x, ok := x.GetResult().(*GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate); ok { + return x.ClusterAnalysisTemplate } return nil } -func (x *GetAnalysisTemplateResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetAnalysisTemplateResponse_Raw); ok { +func (x *GetClusterAnalysisTemplateResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetClusterAnalysisTemplateResponse_Raw); ok { return x.Raw } return nil } -type isGetAnalysisTemplateResponse_Result interface { - isGetAnalysisTemplateResponse_Result() +type isGetClusterAnalysisTemplateResponse_Result interface { + isGetClusterAnalysisTemplateResponse_Result() } -type GetAnalysisTemplateResponse_AnalysisTemplate struct { - // analysis_template is the structured AnalysisTemplate resource. - AnalysisTemplate *v1alpha11.AnalysisTemplate `protobuf:"bytes,1,opt,name=analysis_template,json=analysisTemplate,proto3,oneof"` +type GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate struct { + // cluster_analysis_template is the structured ClusterAnalysisTemplate resource. + ClusterAnalysisTemplate *v1alpha11.ClusterAnalysisTemplate `protobuf:"bytes,1,opt,name=cluster_analysis_template,json=clusterAnalysisTemplate,proto3,oneof"` } -type GetAnalysisTemplateResponse_Raw struct { - // raw is the raw YAML representation of the analysis template. +type GetClusterAnalysisTemplateResponse_Raw struct { + // raw is the raw YAML representation of the cluster analysis template. Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` } -func (*GetAnalysisTemplateResponse_AnalysisTemplate) isGetAnalysisTemplateResponse_Result() {} +func (*GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate) isGetClusterAnalysisTemplateResponse_Result() { +} -func (*GetAnalysisTemplateResponse_Raw) isGetAnalysisTemplateResponse_Result() {} +func (*GetClusterAnalysisTemplateResponse_Raw) isGetClusterAnalysisTemplateResponse_Result() {} -// DeleteAnalysisTemplateRequest is the request for deleting an analysis template. -type DeleteAnalysisTemplateRequest struct { +// DeleteClusterAnalysisTemplateRequest is the request for deleting a cluster analysis template. +type DeleteClusterAnalysisTemplateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // project is the name of the project containing the analysis template. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` - // name is the name of the analysis template to delete. + // name is the name of the cluster analysis template to delete. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *DeleteAnalysisTemplateRequest) Reset() { - *x = DeleteAnalysisTemplateRequest{} +func (x *DeleteClusterAnalysisTemplateRequest) Reset() { + *x = DeleteClusterAnalysisTemplateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[134] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteAnalysisTemplateRequest) String() string { +func (x *DeleteClusterAnalysisTemplateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteAnalysisTemplateRequest) ProtoMessage() {} +func (*DeleteClusterAnalysisTemplateRequest) ProtoMessage() {} -func (x *DeleteAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[134] +func (x *DeleteClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8320,88 +8172,42 @@ func (x *DeleteAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteAnalysisTemplateRequest.ProtoReflect.Descriptor instead. -func (*DeleteAnalysisTemplateRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{134} -} - -func (x *DeleteAnalysisTemplateRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" +// Deprecated: Use DeleteClusterAnalysisTemplateRequest.ProtoReflect.Descriptor instead. +func (*DeleteClusterAnalysisTemplateRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{133} } -func (x *DeleteAnalysisTemplateRequest) GetName() string { +func (x *DeleteClusterAnalysisTemplateRequest) GetName() string { if x != nil { return x.Name } return "" } -// DeleteAnalysisTemplateResponse is the response returned after deleting an analysis template. -type DeleteAnalysisTemplateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *DeleteAnalysisTemplateResponse) Reset() { - *x = DeleteAnalysisTemplateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[135] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeleteAnalysisTemplateResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteAnalysisTemplateResponse) ProtoMessage() {} - -func (x *DeleteAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[135] - 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 DeleteAnalysisTemplateResponse.ProtoReflect.Descriptor instead. -func (*DeleteAnalysisTemplateResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{135} -} - -// ListClusterAnalysisTemplatesRequest is the request for listing all cluster-level analysis templates. -type ListClusterAnalysisTemplatesRequest struct { +// DeleteClusterAnalysisTemplateResponse is the response returned after deleting a cluster analysis template. +type DeleteClusterAnalysisTemplateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *ListClusterAnalysisTemplatesRequest) Reset() { - *x = ListClusterAnalysisTemplatesRequest{} +func (x *DeleteClusterAnalysisTemplateResponse) Reset() { + *x = DeleteClusterAnalysisTemplateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[136] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListClusterAnalysisTemplatesRequest) String() string { +func (x *DeleteClusterAnalysisTemplateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListClusterAnalysisTemplatesRequest) ProtoMessage() {} +func (*DeleteClusterAnalysisTemplateResponse) ProtoMessage() {} -func (x *ListClusterAnalysisTemplatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[136] +func (x *DeleteClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8412,38 +8218,42 @@ func (x *ListClusterAnalysisTemplatesRequest) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use ListClusterAnalysisTemplatesRequest.ProtoReflect.Descriptor instead. -func (*ListClusterAnalysisTemplatesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{136} +// Deprecated: Use DeleteClusterAnalysisTemplateResponse.ProtoReflect.Descriptor instead. +func (*DeleteClusterAnalysisTemplateResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{134} } -// ListClusterAnalysisTemplatesResponse contains a list of cluster-level analysis templates. -type ListClusterAnalysisTemplatesResponse struct { +// GetAnalysisRunRequest is the request for retrieving a specific analysis run. +type GetAnalysisRunRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // cluster_analysis_templates is the list of ClusterAnalysisTemplate resources. - ClusterAnalysisTemplates []*v1alpha11.ClusterAnalysisTemplate `protobuf:"bytes,1,rep,name=cluster_analysis_templates,json=clusteranalysisTemplates,proto3" json:"cluster_analysis_templates,omitempty"` + // namespace is the namespace containing the analysis run. + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + // name is the name of the analysis run to retrieve. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // format specifies the desired response format (structured object or raw YAML). + Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` } -func (x *ListClusterAnalysisTemplatesResponse) Reset() { - *x = ListClusterAnalysisTemplatesResponse{} +func (x *GetAnalysisRunRequest) Reset() { + *x = GetAnalysisRunRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[137] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListClusterAnalysisTemplatesResponse) String() string { +func (x *GetAnalysisRunRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListClusterAnalysisTemplatesResponse) ProtoMessage() {} +func (*GetAnalysisRunRequest) ProtoMessage() {} -func (x *ListClusterAnalysisTemplatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[137] +func (x *GetAnalysisRunRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8454,106 +8264,62 @@ func (x *ListClusterAnalysisTemplatesResponse) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use ListClusterAnalysisTemplatesResponse.ProtoReflect.Descriptor instead. -func (*ListClusterAnalysisTemplatesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{137} +// Deprecated: Use GetAnalysisRunRequest.ProtoReflect.Descriptor instead. +func (*GetAnalysisRunRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{135} } -func (x *ListClusterAnalysisTemplatesResponse) GetClusterAnalysisTemplates() []*v1alpha11.ClusterAnalysisTemplate { +func (x *GetAnalysisRunRequest) GetNamespace() string { if x != nil { - return x.ClusterAnalysisTemplates - } - return nil -} - -// GetClusterAnalysisTemplateRequest is the request for retrieving a specific cluster analysis template. -type GetClusterAnalysisTemplateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // name is the name of the cluster analysis template to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the desired response format (structured object or raw YAML). - Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` -} - -func (x *GetClusterAnalysisTemplateRequest) Reset() { - *x = GetClusterAnalysisTemplateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[138] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetClusterAnalysisTemplateRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetClusterAnalysisTemplateRequest) ProtoMessage() {} - -func (x *GetClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[138] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms + return x.Namespace } - return mi.MessageOf(x) -} - -// Deprecated: Use GetClusterAnalysisTemplateRequest.ProtoReflect.Descriptor instead. -func (*GetClusterAnalysisTemplateRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{138} + return "" } -func (x *GetClusterAnalysisTemplateRequest) GetName() string { +func (x *GetAnalysisRunRequest) GetName() string { if x != nil { return x.Name } return "" } -func (x *GetClusterAnalysisTemplateRequest) GetFormat() RawFormat { +func (x *GetAnalysisRunRequest) GetFormat() RawFormat { if x != nil { return x.Format } return RawFormat_RAW_FORMAT_UNSPECIFIED } -// GetClusterAnalysisTemplateResponse contains the requested cluster analysis template information. -type GetClusterAnalysisTemplateResponse struct { +// GetAnalysisRunResponse contains the requested analysis run information. +type GetAnalysisRunResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Result: // - // *GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate - // *GetClusterAnalysisTemplateResponse_Raw - Result isGetClusterAnalysisTemplateResponse_Result `protobuf_oneof:"result"` + // *GetAnalysisRunResponse_AnalysisRun + // *GetAnalysisRunResponse_Raw + Result isGetAnalysisRunResponse_Result `protobuf_oneof:"result"` } -func (x *GetClusterAnalysisTemplateResponse) Reset() { - *x = GetClusterAnalysisTemplateResponse{} +func (x *GetAnalysisRunResponse) Reset() { + *x = GetAnalysisRunResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[139] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetClusterAnalysisTemplateResponse) String() string { +func (x *GetAnalysisRunResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetClusterAnalysisTemplateResponse) ProtoMessage() {} +func (*GetAnalysisRunResponse) ProtoMessage() {} -func (x *GetClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[139] +func (x *GetAnalysisRunResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8564,78 +8330,83 @@ func (x *GetClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use GetClusterAnalysisTemplateResponse.ProtoReflect.Descriptor instead. -func (*GetClusterAnalysisTemplateResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{139} +// Deprecated: Use GetAnalysisRunResponse.ProtoReflect.Descriptor instead. +func (*GetAnalysisRunResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{136} } -func (m *GetClusterAnalysisTemplateResponse) GetResult() isGetClusterAnalysisTemplateResponse_Result { +func (m *GetAnalysisRunResponse) GetResult() isGetAnalysisRunResponse_Result { if m != nil { return m.Result } return nil } -func (x *GetClusterAnalysisTemplateResponse) GetClusterAnalysisTemplate() *v1alpha11.ClusterAnalysisTemplate { - if x, ok := x.GetResult().(*GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate); ok { - return x.ClusterAnalysisTemplate +func (x *GetAnalysisRunResponse) GetAnalysisRun() *v1alpha11.AnalysisRun { + if x, ok := x.GetResult().(*GetAnalysisRunResponse_AnalysisRun); ok { + return x.AnalysisRun } return nil } -func (x *GetClusterAnalysisTemplateResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetClusterAnalysisTemplateResponse_Raw); ok { +func (x *GetAnalysisRunResponse) GetRaw() []byte { + if x, ok := x.GetResult().(*GetAnalysisRunResponse_Raw); ok { return x.Raw } return nil } -type isGetClusterAnalysisTemplateResponse_Result interface { - isGetClusterAnalysisTemplateResponse_Result() +type isGetAnalysisRunResponse_Result interface { + isGetAnalysisRunResponse_Result() } -type GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate struct { - // cluster_analysis_template is the structured ClusterAnalysisTemplate resource. - ClusterAnalysisTemplate *v1alpha11.ClusterAnalysisTemplate `protobuf:"bytes,1,opt,name=cluster_analysis_template,json=clusterAnalysisTemplate,proto3,oneof"` +type GetAnalysisRunResponse_AnalysisRun struct { + // analysis_run is the structured AnalysisRun resource. + AnalysisRun *v1alpha11.AnalysisRun `protobuf:"bytes,1,opt,name=analysis_run,json=analysisRun,proto3,oneof"` } -type GetClusterAnalysisTemplateResponse_Raw struct { - // raw is the raw YAML representation of the cluster analysis template. +type GetAnalysisRunResponse_Raw struct { + // raw is the raw YAML representation of the analysis run. Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` } -func (*GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate) isGetClusterAnalysisTemplateResponse_Result() { -} +func (*GetAnalysisRunResponse_AnalysisRun) isGetAnalysisRunResponse_Result() {} -func (*GetClusterAnalysisTemplateResponse_Raw) isGetClusterAnalysisTemplateResponse_Result() {} +func (*GetAnalysisRunResponse_Raw) isGetAnalysisRunResponse_Result() {} -// DeleteClusterAnalysisTemplateRequest is the request for deleting a cluster analysis template. -type DeleteClusterAnalysisTemplateRequest struct { +// GetAnalysisRunLogsRequest is the request for retrieving logs from an analysis run. +type GetAnalysisRunLogsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // name is the name of the cluster analysis template to delete. + // namespace is the namespace containing the analysis run. + Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` + // name is the name of the analysis run whose logs to retrieve. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // metric_name is the specific metric whose logs to retrieve. + MetricName string `protobuf:"bytes,3,opt,name=metric_name,json=metricName,proto3" json:"metric_name,omitempty"` + // container_name is the specific container whose logs to retrieve. + ContainerName string `protobuf:"bytes,4,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` } -func (x *DeleteClusterAnalysisTemplateRequest) Reset() { - *x = DeleteClusterAnalysisTemplateRequest{} +func (x *GetAnalysisRunLogsRequest) Reset() { + *x = GetAnalysisRunLogsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[140] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteClusterAnalysisTemplateRequest) String() string { +func (x *GetAnalysisRunLogsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteClusterAnalysisTemplateRequest) ProtoMessage() {} +func (*GetAnalysisRunLogsRequest) ProtoMessage() {} -func (x *DeleteClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[140] +func (x *GetAnalysisRunLogsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8646,42 +8417,66 @@ func (x *DeleteClusterAnalysisTemplateRequest) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use DeleteClusterAnalysisTemplateRequest.ProtoReflect.Descriptor instead. -func (*DeleteClusterAnalysisTemplateRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{140} +// Deprecated: Use GetAnalysisRunLogsRequest.ProtoReflect.Descriptor instead. +func (*GetAnalysisRunLogsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{137} } -func (x *DeleteClusterAnalysisTemplateRequest) GetName() string { +func (x *GetAnalysisRunLogsRequest) GetNamespace() string { if x != nil { - return x.Name + return x.Namespace } return "" } -// DeleteClusterAnalysisTemplateResponse is the response returned after deleting a cluster analysis template. -type DeleteClusterAnalysisTemplateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *GetAnalysisRunLogsRequest) GetName() string { + if x != nil { + return x.Name + } + return "" } -func (x *DeleteClusterAnalysisTemplateResponse) Reset() { - *x = DeleteClusterAnalysisTemplateResponse{} +func (x *GetAnalysisRunLogsRequest) GetMetricName() string { + if x != nil { + return x.MetricName + } + return "" +} + +func (x *GetAnalysisRunLogsRequest) GetContainerName() string { + if x != nil { + return x.ContainerName + } + return "" +} + +// GetAnalysisRunLogsResponse contains a chunk of logs from the analysis run. +type GetAnalysisRunLogsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // chunk is a portion of the log output from the analysis run. + Chunk string `protobuf:"bytes,1,opt,name=chunk,proto3" json:"chunk,omitempty"` +} + +func (x *GetAnalysisRunLogsResponse) Reset() { + *x = GetAnalysisRunLogsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[141] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeleteClusterAnalysisTemplateResponse) String() string { +func (x *GetAnalysisRunLogsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteClusterAnalysisTemplateResponse) ProtoMessage() {} +func (*GetAnalysisRunLogsResponse) ProtoMessage() {} -func (x *DeleteClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[141] +func (x *GetAnalysisRunLogsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8692,42 +8487,45 @@ func (x *DeleteClusterAnalysisTemplateResponse) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use DeleteClusterAnalysisTemplateResponse.ProtoReflect.Descriptor instead. -func (*DeleteClusterAnalysisTemplateResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{141} +// Deprecated: Use GetAnalysisRunLogsResponse.ProtoReflect.Descriptor instead. +func (*GetAnalysisRunLogsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{138} } -// GetAnalysisRunRequest is the request for retrieving a specific analysis run. -type GetAnalysisRunRequest struct { +func (x *GetAnalysisRunLogsResponse) GetChunk() string { + if x != nil { + return x.Chunk + } + return "" +} + +// ListProjectEventsRequest is the request for listing events in a project. +type ListProjectEventsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // namespace is the namespace containing the analysis run. - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - // name is the name of the analysis run to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // format specifies the desired response format (structured object or raw YAML). - Format RawFormat `protobuf:"varint,3,opt,name=format,proto3,enum=akuity.io.kargo.service.v1alpha1.RawFormat" json:"format,omitempty"` + // project is the name of the project whose events will be listed. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *GetAnalysisRunRequest) Reset() { - *x = GetAnalysisRunRequest{} +func (x *ListProjectEventsRequest) Reset() { + *x = ListProjectEventsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[142] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetAnalysisRunRequest) String() string { +func (x *ListProjectEventsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAnalysisRunRequest) ProtoMessage() {} +func (*ListProjectEventsRequest) ProtoMessage() {} -func (x *GetAnalysisRunRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[142] +func (x *ListProjectEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8738,62 +8536,45 @@ func (x *GetAnalysisRunRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAnalysisRunRequest.ProtoReflect.Descriptor instead. -func (*GetAnalysisRunRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{142} -} - -func (x *GetAnalysisRunRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" +// Deprecated: Use ListProjectEventsRequest.ProtoReflect.Descriptor instead. +func (*ListProjectEventsRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{139} } -func (x *GetAnalysisRunRequest) GetName() string { +func (x *ListProjectEventsRequest) GetProject() string { if x != nil { - return x.Name + return x.Project } return "" } -func (x *GetAnalysisRunRequest) GetFormat() RawFormat { - if x != nil { - return x.Format - } - return RawFormat_RAW_FORMAT_UNSPECIFIED -} - -// GetAnalysisRunResponse contains the requested analysis run information. -type GetAnalysisRunResponse struct { +// ListProjectEventsResponse contains a list of events for the specified project. +type ListProjectEventsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Result: - // - // *GetAnalysisRunResponse_AnalysisRun - // *GetAnalysisRunResponse_Raw - Result isGetAnalysisRunResponse_Result `protobuf_oneof:"result"` + // events is the list of Kubernetes Events within the project. + Events []*v1.Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` } -func (x *GetAnalysisRunResponse) Reset() { - *x = GetAnalysisRunResponse{} +func (x *ListProjectEventsResponse) Reset() { + *x = ListProjectEventsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[143] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetAnalysisRunResponse) String() string { +func (x *ListProjectEventsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAnalysisRunResponse) ProtoMessage() {} +func (*ListProjectEventsResponse) ProtoMessage() {} -func (x *GetAnalysisRunResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[143] +func (x *ListProjectEventsResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8804,83 +8585,45 @@ func (x *GetAnalysisRunResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAnalysisRunResponse.ProtoReflect.Descriptor instead. -func (*GetAnalysisRunResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{143} -} - -func (m *GetAnalysisRunResponse) GetResult() isGetAnalysisRunResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *GetAnalysisRunResponse) GetAnalysisRun() *v1alpha11.AnalysisRun { - if x, ok := x.GetResult().(*GetAnalysisRunResponse_AnalysisRun); ok { - return x.AnalysisRun - } - return nil +// Deprecated: Use ListProjectEventsResponse.ProtoReflect.Descriptor instead. +func (*ListProjectEventsResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{140} } -func (x *GetAnalysisRunResponse) GetRaw() []byte { - if x, ok := x.GetResult().(*GetAnalysisRunResponse_Raw); ok { - return x.Raw +func (x *ListProjectEventsResponse) GetEvents() []*v1.Event { + if x != nil { + return x.Events } return nil } -type isGetAnalysisRunResponse_Result interface { - isGetAnalysisRunResponse_Result() -} - -type GetAnalysisRunResponse_AnalysisRun struct { - // analysis_run is the structured AnalysisRun resource. - AnalysisRun *v1alpha11.AnalysisRun `protobuf:"bytes,1,opt,name=analysis_run,json=analysisRun,proto3,oneof"` -} - -type GetAnalysisRunResponse_Raw struct { - // raw is the raw YAML representation of the analysis run. - Raw []byte `protobuf:"bytes,2,opt,name=raw,proto3,oneof"` -} - -func (*GetAnalysisRunResponse_AnalysisRun) isGetAnalysisRunResponse_Result() {} - -func (*GetAnalysisRunResponse_Raw) isGetAnalysisRunResponse_Result() {} - -// GetAnalysisRunLogsRequest is the request for retrieving logs from an analysis run. -type GetAnalysisRunLogsRequest struct { +// ListPromotionTasksRequest is the request for listing promotion tasks in a project. +type ListPromotionTasksRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // namespace is the namespace containing the analysis run. - Namespace string `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"` - // name is the name of the analysis run whose logs to retrieve. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // metric_name is the specific metric whose logs to retrieve. - MetricName string `protobuf:"bytes,3,opt,name=metric_name,json=metricName,proto3" json:"metric_name,omitempty"` - // container_name is the specific container whose logs to retrieve. - ContainerName string `protobuf:"bytes,4,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` + // project is the name of the project whose promotion tasks will be listed. + Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` } -func (x *GetAnalysisRunLogsRequest) Reset() { - *x = GetAnalysisRunLogsRequest{} +func (x *ListPromotionTasksRequest) Reset() { + *x = ListPromotionTasksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[144] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetAnalysisRunLogsRequest) String() string { +func (x *ListPromotionTasksRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAnalysisRunLogsRequest) ProtoMessage() {} +func (*ListPromotionTasksRequest) ProtoMessage() {} -func (x *GetAnalysisRunLogsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[144] +func (x *ListPromotionTasksRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8891,66 +8634,45 @@ func (x *GetAnalysisRunLogsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAnalysisRunLogsRequest.ProtoReflect.Descriptor instead. -func (*GetAnalysisRunLogsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{144} -} - -func (x *GetAnalysisRunLogsRequest) GetNamespace() string { - if x != nil { - return x.Namespace - } - return "" -} - -func (x *GetAnalysisRunLogsRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *GetAnalysisRunLogsRequest) GetMetricName() string { - if x != nil { - return x.MetricName - } - return "" +// Deprecated: Use ListPromotionTasksRequest.ProtoReflect.Descriptor instead. +func (*ListPromotionTasksRequest) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{141} } -func (x *GetAnalysisRunLogsRequest) GetContainerName() string { +func (x *ListPromotionTasksRequest) GetProject() string { if x != nil { - return x.ContainerName + return x.Project } return "" } -// GetAnalysisRunLogsResponse contains a chunk of logs from the analysis run. -type GetAnalysisRunLogsResponse struct { +// ListPromotionTasksResponse contains a list of promotion tasks for the specified project. +type ListPromotionTasksResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // chunk is a portion of the log output from the analysis run. - Chunk string `protobuf:"bytes,1,opt,name=chunk,proto3" json:"chunk,omitempty"` + // promotion_tasks is the list of PromotionTask resources within the project. + PromotionTasks []*v1alpha1.PromotionTask `protobuf:"bytes,1,rep,name=promotion_tasks,json=promotionTasks,proto3" json:"promotion_tasks,omitempty"` } -func (x *GetAnalysisRunLogsResponse) Reset() { - *x = GetAnalysisRunLogsResponse{} +func (x *ListPromotionTasksResponse) Reset() { + *x = ListPromotionTasksResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[145] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetAnalysisRunLogsResponse) String() string { +func (x *ListPromotionTasksResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAnalysisRunLogsResponse) ProtoMessage() {} +func (*ListPromotionTasksResponse) ProtoMessage() {} -func (x *GetAnalysisRunLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[145] +func (x *ListPromotionTasksResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_service_v1alpha1_service_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8961,208 +8683,12 @@ func (x *GetAnalysisRunLogsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAnalysisRunLogsResponse.ProtoReflect.Descriptor instead. -func (*GetAnalysisRunLogsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{145} +// Deprecated: Use ListPromotionTasksResponse.ProtoReflect.Descriptor instead. +func (*ListPromotionTasksResponse) Descriptor() ([]byte, []int) { + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{142} } -func (x *GetAnalysisRunLogsResponse) GetChunk() string { - if x != nil { - return x.Chunk - } - return "" -} - -// ListProjectEventsRequest is the request for listing events in a project. -type ListProjectEventsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // project is the name of the project whose events will be listed. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` -} - -func (x *ListProjectEventsRequest) Reset() { - *x = ListProjectEventsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[146] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListProjectEventsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListProjectEventsRequest) ProtoMessage() {} - -func (x *ListProjectEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[146] - 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 ListProjectEventsRequest.ProtoReflect.Descriptor instead. -func (*ListProjectEventsRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{146} -} - -func (x *ListProjectEventsRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -// ListProjectEventsResponse contains a list of events for the specified project. -type ListProjectEventsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // events is the list of Kubernetes Events within the project. - Events []*v11.Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` -} - -func (x *ListProjectEventsResponse) Reset() { - *x = ListProjectEventsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[147] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListProjectEventsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListProjectEventsResponse) ProtoMessage() {} - -func (x *ListProjectEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[147] - 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 ListProjectEventsResponse.ProtoReflect.Descriptor instead. -func (*ListProjectEventsResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{147} -} - -func (x *ListProjectEventsResponse) GetEvents() []*v11.Event { - if x != nil { - return x.Events - } - return nil -} - -// ListPromotionTasksRequest is the request for listing promotion tasks in a project. -type ListPromotionTasksRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // project is the name of the project whose promotion tasks will be listed. - Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"` -} - -func (x *ListPromotionTasksRequest) Reset() { - *x = ListPromotionTasksRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[148] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListPromotionTasksRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListPromotionTasksRequest) ProtoMessage() {} - -func (x *ListPromotionTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[148] - 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 ListPromotionTasksRequest.ProtoReflect.Descriptor instead. -func (*ListPromotionTasksRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{148} -} - -func (x *ListPromotionTasksRequest) GetProject() string { - if x != nil { - return x.Project - } - return "" -} - -// ListPromotionTasksResponse contains a list of promotion tasks for the specified project. -type ListPromotionTasksResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // promotion_tasks is the list of PromotionTask resources within the project. - PromotionTasks []*v1alpha1.PromotionTask `protobuf:"bytes,1,rep,name=promotion_tasks,json=promotionTasks,proto3" json:"promotion_tasks,omitempty"` -} - -func (x *ListPromotionTasksResponse) Reset() { - *x = ListPromotionTasksResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[149] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListPromotionTasksResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListPromotionTasksResponse) ProtoMessage() {} - -func (x *ListPromotionTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[149] - 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 ListPromotionTasksResponse.ProtoReflect.Descriptor instead. -func (*ListPromotionTasksResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{149} -} - -func (x *ListPromotionTasksResponse) GetPromotionTasks() []*v1alpha1.PromotionTask { +func (x *ListPromotionTasksResponse) GetPromotionTasks() []*v1alpha1.PromotionTask { if x != nil { return x.PromotionTasks } @@ -9186,7 +8712,7 @@ type GetPromotionTaskRequest struct { func (x *GetPromotionTaskRequest) Reset() { *x = GetPromotionTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[150] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9199,7 +8725,7 @@ func (x *GetPromotionTaskRequest) String() string { func (*GetPromotionTaskRequest) ProtoMessage() {} func (x *GetPromotionTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[150] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9212,7 +8738,7 @@ func (x *GetPromotionTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPromotionTaskRequest.ProtoReflect.Descriptor instead. func (*GetPromotionTaskRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{150} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{143} } func (x *GetPromotionTaskRequest) GetProject() string { @@ -9252,7 +8778,7 @@ type GetPromotionTaskResponse struct { func (x *GetPromotionTaskResponse) Reset() { *x = GetPromotionTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[151] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9265,7 +8791,7 @@ func (x *GetPromotionTaskResponse) String() string { func (*GetPromotionTaskResponse) ProtoMessage() {} func (x *GetPromotionTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[151] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9278,7 +8804,7 @@ func (x *GetPromotionTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPromotionTaskResponse.ProtoReflect.Descriptor instead. func (*GetPromotionTaskResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{151} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{144} } func (m *GetPromotionTaskResponse) GetResult() isGetPromotionTaskResponse_Result { @@ -9330,7 +8856,7 @@ type ListClusterPromotionTasksRequest struct { func (x *ListClusterPromotionTasksRequest) Reset() { *x = ListClusterPromotionTasksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[152] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9343,7 +8869,7 @@ func (x *ListClusterPromotionTasksRequest) String() string { func (*ListClusterPromotionTasksRequest) ProtoMessage() {} func (x *ListClusterPromotionTasksRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[152] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9356,7 +8882,7 @@ func (x *ListClusterPromotionTasksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClusterPromotionTasksRequest.ProtoReflect.Descriptor instead. func (*ListClusterPromotionTasksRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{152} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{145} } // ListClusterPromotionTasksResponse contains a list of cluster-level promotion tasks. @@ -9372,7 +8898,7 @@ type ListClusterPromotionTasksResponse struct { func (x *ListClusterPromotionTasksResponse) Reset() { *x = ListClusterPromotionTasksResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[153] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9385,7 +8911,7 @@ func (x *ListClusterPromotionTasksResponse) String() string { func (*ListClusterPromotionTasksResponse) ProtoMessage() {} func (x *ListClusterPromotionTasksResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[153] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9398,7 +8924,7 @@ func (x *ListClusterPromotionTasksResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ListClusterPromotionTasksResponse.ProtoReflect.Descriptor instead. func (*ListClusterPromotionTasksResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{153} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{146} } func (x *ListClusterPromotionTasksResponse) GetClusterPromotionTasks() []*v1alpha1.ClusterPromotionTask { @@ -9423,7 +8949,7 @@ type GetClusterPromotionTaskRequest struct { func (x *GetClusterPromotionTaskRequest) Reset() { *x = GetClusterPromotionTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[154] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9436,7 +8962,7 @@ func (x *GetClusterPromotionTaskRequest) String() string { func (*GetClusterPromotionTaskRequest) ProtoMessage() {} func (x *GetClusterPromotionTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[154] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9449,7 +8975,7 @@ func (x *GetClusterPromotionTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterPromotionTaskRequest.ProtoReflect.Descriptor instead. func (*GetClusterPromotionTaskRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{154} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{147} } func (x *GetClusterPromotionTaskRequest) GetName() string { @@ -9482,7 +9008,7 @@ type GetClusterPromotionTaskResponse struct { func (x *GetClusterPromotionTaskResponse) Reset() { *x = GetClusterPromotionTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[155] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9495,7 +9021,7 @@ func (x *GetClusterPromotionTaskResponse) String() string { func (*GetClusterPromotionTaskResponse) ProtoMessage() {} func (x *GetClusterPromotionTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[155] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9508,7 +9034,7 @@ func (x *GetClusterPromotionTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterPromotionTaskResponse.ProtoReflect.Descriptor instead. func (*GetClusterPromotionTaskResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{155} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{148} } func (m *GetClusterPromotionTaskResponse) GetResult() isGetClusterPromotionTaskResponse_Result { @@ -9564,7 +9090,7 @@ type CreateRoleRequest struct { func (x *CreateRoleRequest) Reset() { *x = CreateRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[156] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9577,7 +9103,7 @@ func (x *CreateRoleRequest) String() string { func (*CreateRoleRequest) ProtoMessage() {} func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[156] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9590,7 +9116,7 @@ func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRoleRequest.ProtoReflect.Descriptor instead. func (*CreateRoleRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{156} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{149} } func (x *CreateRoleRequest) GetRole() *v1alpha12.Role { @@ -9614,7 +9140,7 @@ type CreateRoleResponse struct { func (x *CreateRoleResponse) Reset() { *x = CreateRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[157] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9627,7 +9153,7 @@ func (x *CreateRoleResponse) String() string { func (*CreateRoleResponse) ProtoMessage() {} func (x *CreateRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[157] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9640,7 +9166,7 @@ func (x *CreateRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRoleResponse.ProtoReflect.Descriptor instead. func (*CreateRoleResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{157} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{150} } func (x *CreateRoleResponse) GetRole() *v1alpha12.Role { @@ -9666,7 +9192,7 @@ type DeleteRoleRequest struct { func (x *DeleteRoleRequest) Reset() { *x = DeleteRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[158] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9679,7 +9205,7 @@ func (x *DeleteRoleRequest) String() string { func (*DeleteRoleRequest) ProtoMessage() {} func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[158] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9692,7 +9218,7 @@ func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRoleRequest.ProtoReflect.Descriptor instead. func (*DeleteRoleRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{158} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{151} } func (x *DeleteRoleRequest) GetProject() string { @@ -9720,7 +9246,7 @@ type DeleteRoleResponse struct { func (x *DeleteRoleResponse) Reset() { *x = DeleteRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[159] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9733,7 +9259,7 @@ func (x *DeleteRoleResponse) String() string { func (*DeleteRoleResponse) ProtoMessage() {} func (x *DeleteRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[159] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9746,7 +9272,7 @@ func (x *DeleteRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRoleResponse.ProtoReflect.Descriptor instead. func (*DeleteRoleResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{159} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{152} } // GetRoleRequest is a request to retrieve the details of a Kargo Role virtual @@ -9775,7 +9301,7 @@ type GetRoleRequest struct { func (x *GetRoleRequest) Reset() { *x = GetRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[160] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9788,7 +9314,7 @@ func (x *GetRoleRequest) String() string { func (*GetRoleRequest) ProtoMessage() {} func (x *GetRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[160] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9801,7 +9327,7 @@ func (x *GetRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRoleRequest.ProtoReflect.Descriptor instead. func (*GetRoleRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{160} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{153} } func (x *GetRoleRequest) GetSystemLevel() bool { @@ -9857,7 +9383,7 @@ type GetRoleResponse struct { func (x *GetRoleResponse) Reset() { *x = GetRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[161] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9870,7 +9396,7 @@ func (x *GetRoleResponse) String() string { func (*GetRoleResponse) ProtoMessage() {} func (x *GetRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[161] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9883,7 +9409,7 @@ func (x *GetRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRoleResponse.ProtoReflect.Descriptor instead. func (*GetRoleResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{161} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{154} } func (m *GetRoleResponse) GetResult() isGetRoleResponse_Result { @@ -9954,7 +9480,7 @@ type Claims struct { func (x *Claims) Reset() { *x = Claims{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[162] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9967,7 +9493,7 @@ func (x *Claims) String() string { func (*Claims) ProtoMessage() {} func (x *Claims) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[162] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9980,7 +9506,7 @@ func (x *Claims) ProtoReflect() protoreflect.Message { // Deprecated: Use Claims.ProtoReflect.Descriptor instead. func (*Claims) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{162} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{155} } func (x *Claims) GetClaims() []*v1alpha12.Claim { @@ -10013,7 +9539,7 @@ type GrantRequest struct { func (x *GrantRequest) Reset() { *x = GrantRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[163] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10026,7 +9552,7 @@ func (x *GrantRequest) String() string { func (*GrantRequest) ProtoMessage() {} func (x *GrantRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[163] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10039,7 +9565,7 @@ func (x *GrantRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GrantRequest.ProtoReflect.Descriptor instead. func (*GrantRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{163} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{156} } func (x *GrantRequest) GetProject() string { @@ -10110,7 +9636,7 @@ type GrantResponse struct { func (x *GrantResponse) Reset() { *x = GrantResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[164] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10123,7 +9649,7 @@ func (x *GrantResponse) String() string { func (*GrantResponse) ProtoMessage() {} func (x *GrantResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[164] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10136,7 +9662,7 @@ func (x *GrantResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GrantResponse.ProtoReflect.Descriptor instead. func (*GrantResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{164} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{157} } func (x *GrantResponse) GetRole() *v1alpha12.Role { @@ -10166,7 +9692,7 @@ type ListRolesRequest struct { func (x *ListRolesRequest) Reset() { *x = ListRolesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[165] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10179,7 +9705,7 @@ func (x *ListRolesRequest) String() string { func (*ListRolesRequest) ProtoMessage() {} func (x *ListRolesRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[165] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10192,7 +9718,7 @@ func (x *ListRolesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRolesRequest.ProtoReflect.Descriptor instead. func (*ListRolesRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{165} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{158} } func (x *ListRolesRequest) GetSystemLevel() bool { @@ -10234,7 +9760,7 @@ type ListRolesResponse struct { func (x *ListRolesResponse) Reset() { *x = ListRolesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[166] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10247,7 +9773,7 @@ func (x *ListRolesResponse) String() string { func (*ListRolesResponse) ProtoMessage() {} func (x *ListRolesResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[166] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10260,7 +9786,7 @@ func (x *ListRolesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRolesResponse.ProtoReflect.Descriptor instead. func (*ListRolesResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{166} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{159} } func (x *ListRolesResponse) GetRoles() []*v1alpha12.Role { @@ -10300,7 +9826,7 @@ type RevokeRequest struct { func (x *RevokeRequest) Reset() { *x = RevokeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[167] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10313,7 +9839,7 @@ func (x *RevokeRequest) String() string { func (*RevokeRequest) ProtoMessage() {} func (x *RevokeRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[167] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10326,7 +9852,7 @@ func (x *RevokeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeRequest.ProtoReflect.Descriptor instead. func (*RevokeRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{167} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{160} } func (x *RevokeRequest) GetProject() string { @@ -10399,7 +9925,7 @@ type RevokeResponse struct { func (x *RevokeResponse) Reset() { *x = RevokeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[168] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10412,7 +9938,7 @@ func (x *RevokeResponse) String() string { func (*RevokeResponse) ProtoMessage() {} func (x *RevokeResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[168] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10425,7 +9951,7 @@ func (x *RevokeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeResponse.ProtoReflect.Descriptor instead. func (*RevokeResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{168} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{161} } func (x *RevokeResponse) GetRole() *v1alpha12.Role { @@ -10449,7 +9975,7 @@ type UpdateRoleRequest struct { func (x *UpdateRoleRequest) Reset() { *x = UpdateRoleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[169] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10462,7 +9988,7 @@ func (x *UpdateRoleRequest) String() string { func (*UpdateRoleRequest) ProtoMessage() {} func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[169] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10475,7 +10001,7 @@ func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRoleRequest.ProtoReflect.Descriptor instead. func (*UpdateRoleRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{169} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{162} } func (x *UpdateRoleRequest) GetRole() *v1alpha12.Role { @@ -10499,7 +10025,7 @@ type UpdateRoleResponse struct { func (x *UpdateRoleResponse) Reset() { *x = UpdateRoleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[170] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10512,7 +10038,7 @@ func (x *UpdateRoleResponse) String() string { func (*UpdateRoleResponse) ProtoMessage() {} func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[170] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10525,7 +10051,7 @@ func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRoleResponse.ProtoReflect.Descriptor instead. func (*UpdateRoleResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{170} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{163} } func (x *UpdateRoleResponse) GetRole() *v1alpha12.Role { @@ -10560,7 +10086,7 @@ type CreateAPITokenRequest struct { func (x *CreateAPITokenRequest) Reset() { *x = CreateAPITokenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[171] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10573,7 +10099,7 @@ func (x *CreateAPITokenRequest) String() string { func (*CreateAPITokenRequest) ProtoMessage() {} func (x *CreateAPITokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[171] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10586,7 +10112,7 @@ func (x *CreateAPITokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAPITokenRequest.ProtoReflect.Descriptor instead. func (*CreateAPITokenRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{171} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{164} } func (x *CreateAPITokenRequest) GetSystemLevel() bool { @@ -10625,13 +10151,13 @@ type CreateAPITokenResponse struct { unknownFields protoimpl.UnknownFields // token_secret is a Kubernetes Secret containing the token. - TokenSecret *v11.Secret `protobuf:"bytes,1,opt,name=token_secret,json=tokenSecret,proto3" json:"token_secret,omitempty"` + TokenSecret *v1.Secret `protobuf:"bytes,1,opt,name=token_secret,json=tokenSecret,proto3" json:"token_secret,omitempty"` } func (x *CreateAPITokenResponse) Reset() { *x = CreateAPITokenResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[172] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10644,7 +10170,7 @@ func (x *CreateAPITokenResponse) String() string { func (*CreateAPITokenResponse) ProtoMessage() {} func (x *CreateAPITokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[172] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10657,10 +10183,10 @@ func (x *CreateAPITokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAPITokenResponse.ProtoReflect.Descriptor instead. func (*CreateAPITokenResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{172} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{165} } -func (x *CreateAPITokenResponse) GetTokenSecret() *v11.Secret { +func (x *CreateAPITokenResponse) GetTokenSecret() *v1.Secret { if x != nil { return x.TokenSecret } @@ -10688,7 +10214,7 @@ type DeleteAPITokenRequest struct { func (x *DeleteAPITokenRequest) Reset() { *x = DeleteAPITokenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[173] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10701,7 +10227,7 @@ func (x *DeleteAPITokenRequest) String() string { func (*DeleteAPITokenRequest) ProtoMessage() {} func (x *DeleteAPITokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[173] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10714,7 +10240,7 @@ func (x *DeleteAPITokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAPITokenRequest.ProtoReflect.Descriptor instead. func (*DeleteAPITokenRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{173} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{166} } func (x *DeleteAPITokenRequest) GetSystemLevel() bool { @@ -10749,7 +10275,7 @@ type DeleteAPITokenResponse struct { func (x *DeleteAPITokenResponse) Reset() { *x = DeleteAPITokenResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[174] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10762,7 +10288,7 @@ func (x *DeleteAPITokenResponse) String() string { func (*DeleteAPITokenResponse) ProtoMessage() {} func (x *DeleteAPITokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[174] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10775,7 +10301,7 @@ func (x *DeleteAPITokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAPITokenResponse.ProtoReflect.Descriptor instead. func (*DeleteAPITokenResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{174} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{167} } // GetAPITokenRequest is a request to retrieve details of a bearer token @@ -10801,7 +10327,7 @@ type GetAPITokenRequest struct { func (x *GetAPITokenRequest) Reset() { *x = GetAPITokenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[175] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10814,7 +10340,7 @@ func (x *GetAPITokenRequest) String() string { func (*GetAPITokenRequest) ProtoMessage() {} func (x *GetAPITokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[175] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10827,7 +10353,7 @@ func (x *GetAPITokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAPITokenRequest.ProtoReflect.Descriptor instead. func (*GetAPITokenRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{175} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{168} } func (x *GetAPITokenRequest) GetSystemLevel() bool { @@ -10875,7 +10401,7 @@ type GetAPITokenResponse struct { func (x *GetAPITokenResponse) Reset() { *x = GetAPITokenResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[176] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10888,7 +10414,7 @@ func (x *GetAPITokenResponse) String() string { func (*GetAPITokenResponse) ProtoMessage() {} func (x *GetAPITokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[176] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10901,7 +10427,7 @@ func (x *GetAPITokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAPITokenResponse.ProtoReflect.Descriptor instead. func (*GetAPITokenResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{176} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{169} } func (m *GetAPITokenResponse) GetResult() isGetAPITokenResponse_Result { @@ -10911,7 +10437,7 @@ func (m *GetAPITokenResponse) GetResult() isGetAPITokenResponse_Result { return nil } -func (x *GetAPITokenResponse) GetTokenSecret() *v11.Secret { +func (x *GetAPITokenResponse) GetTokenSecret() *v1.Secret { if x, ok := x.GetResult().(*GetAPITokenResponse_TokenSecret); ok { return x.TokenSecret } @@ -10932,7 +10458,7 @@ type isGetAPITokenResponse_Result interface { type GetAPITokenResponse_TokenSecret struct { // token_secret is a Kubernetes Secrets containing a redacted token // associated with a Kargo Role virtual resource. - TokenSecret *v11.Secret `protobuf:"bytes,1,opt,name=token_secret,json=tokenSecret,proto3,oneof"` + TokenSecret *v1.Secret `protobuf:"bytes,1,opt,name=token_secret,json=tokenSecret,proto3,oneof"` } type GetAPITokenResponse_Raw struct { @@ -10964,7 +10490,7 @@ type ListAPITokensRequest struct { func (x *ListAPITokensRequest) Reset() { *x = ListAPITokensRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[177] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10977,7 +10503,7 @@ func (x *ListAPITokensRequest) String() string { func (*ListAPITokensRequest) ProtoMessage() {} func (x *ListAPITokensRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[177] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[170] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10990,7 +10516,7 @@ func (x *ListAPITokensRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAPITokensRequest.ProtoReflect.Descriptor instead. func (*ListAPITokensRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{177} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{170} } func (x *ListAPITokensRequest) GetSystemLevel() bool { @@ -11023,13 +10549,13 @@ type ListAPITokensResponse struct { // token_secrets is the list of Kubernetes Secrets containing redacted tokens // associated with a Kargo Role virtual resource. - TokenSecrets []*v11.Secret `protobuf:"bytes,1,rep,name=token_secrets,json=tokenSecrets,proto3" json:"token_secrets,omitempty"` + TokenSecrets []*v1.Secret `protobuf:"bytes,1,rep,name=token_secrets,json=tokenSecrets,proto3" json:"token_secrets,omitempty"` } func (x *ListAPITokensResponse) Reset() { *x = ListAPITokensResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[178] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11042,7 +10568,7 @@ func (x *ListAPITokensResponse) String() string { func (*ListAPITokensResponse) ProtoMessage() {} func (x *ListAPITokensResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[178] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[171] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11055,10 +10581,10 @@ func (x *ListAPITokensResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAPITokensResponse.ProtoReflect.Descriptor instead. func (*ListAPITokensResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{178} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{171} } -func (x *ListAPITokensResponse) GetTokenSecrets() []*v11.Secret { +func (x *ListAPITokensResponse) GetTokenSecrets() []*v1.Secret { if x != nil { return x.TokenSecrets } @@ -11084,7 +10610,7 @@ type RefreshResourceRequest struct { func (x *RefreshResourceRequest) Reset() { *x = RefreshResourceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[179] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11097,7 +10623,7 @@ func (x *RefreshResourceRequest) String() string { func (*RefreshResourceRequest) ProtoMessage() {} func (x *RefreshResourceRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[179] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[172] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11110,7 +10636,7 @@ func (x *RefreshResourceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshResourceRequest.ProtoReflect.Descriptor instead. func (*RefreshResourceRequest) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{179} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{172} } func (x *RefreshResourceRequest) GetProject() string { @@ -11145,7 +10671,7 @@ type RefreshResourceResponse struct { func (x *RefreshResourceResponse) Reset() { *x = RefreshResourceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[180] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11158,7 +10684,7 @@ func (x *RefreshResourceResponse) String() string { func (*RefreshResourceResponse) ProtoMessage() {} func (x *RefreshResourceResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_service_v1alpha1_service_proto_msgTypes[180] + mi := &file_api_service_v1alpha1_service_proto_msgTypes[173] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11171,7 +10697,7 @@ func (x *RefreshResourceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshResourceResponse.ProtoReflect.Descriptor instead. func (*RefreshResourceResponse) Descriptor() ([]byte, []int) { - return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{180} + return file_api_service_v1alpha1_service_proto_rawDescGZIP(), []int{173} } func (x *RefreshResourceResponse) GetResource() *anypb.Any { @@ -11377,1918 +10903,1794 @@ var file_api_service_v1alpha1_service_proto_rawDesc = []byte{ 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x56, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x70, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, - 0x59, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x11, 0x4c, 0x69, - 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x4c, 0x69, - 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x58, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x63, 0x0a, 0x0b, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61, - 0x67, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xba, 0x01, 0x0a, 0x06, 0x54, 0x61, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x67, 0x4d, - 0x61, 0x70, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x1a, 0x68, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x84, 0x01, 0x0a, 0x12, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x43, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0x2d, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, + 0xd3, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, + 0x1a, 0x63, 0x0a, 0x0b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x61, - 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, - 0x0d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x53, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x2e, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x84, - 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, - 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, - 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x59, 0x0a, 0x1c, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x0e, 0x68, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x52, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x73, 0x22, 0x6c, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x22, 0x42, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, 0x02, 0x0a, - 0x0c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x51, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x30, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x6d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x6b, 0x67, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, - 0x65, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, - 0x12, 0x4b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, + 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xba, 0x01, 0x0a, 0x06, 0x54, 0x61, 0x67, 0x4d, 0x61, 0x70, + 0x12, 0x46, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x48, 0x01, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x48, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, - 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x61, 0x0a, 0x11, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x10, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x30, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x70, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xca, 0x05, 0x0a, - 0x12, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x12, 0x4f, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x6b, - 0x67, 0x2e, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x52, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x65, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x37, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, - 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x48, 0x01, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x64, 0x0a, 0x0e, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x02, 0x52, 0x0d, 0x6c, - 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x49, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x48, 0x03, 0x52, - 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x61, - 0x75, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x75, 0x74, - 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0x5e, 0x0a, 0x19, 0x4c, 0x69, 0x73, - 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xa0, 0x01, 0x0a, 0x1a, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x67, - 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, - 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9e, 0x01, 0x0a, - 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, - 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9d, 0x01, - 0x0a, 0x1b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, - 0x0d, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x31, 0x2e, 0x54, 0x61, 0x67, 0x4d, 0x61, 0x70, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x68, 0x0a, 0x09, 0x54, 0x61, 0x67, 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, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, 0x0d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x4d, 0x61, 0x70, 0x12, 0x53, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x5e, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, - 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x63, 0x6c, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x4d, 0x61, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x84, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x75, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x43, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x59, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xdc, 0x01, + 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x79, 0x0a, 0x0e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x68, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb0, 0x01, 0x0a, + 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x6c, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x42, 0x0a, + 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, + 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1a, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x5a, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, - 0x56, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x57, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, - 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, - 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, - 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x45, 0x0a, 0x15, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, - 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x15, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, + 0x67, 0x65, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x22, 0x45, 0x0a, 0x15, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, - 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, - 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, - 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, - 0x0a, 0x0a, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x70, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x69, 0x6e, 0x65, 0x22, 0x77, 0x0a, 0x14, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x49, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x22, 0x78, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, - 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x1d, 0x0a, - 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x0a, 0x19, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x22, 0x71, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, - 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x5a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x57, 0x0a, + 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x43, - 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x66, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x48, 0x00, 0x52, 0x07, 0x66, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x49, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0x73, 0x0a, - 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, + 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, + 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x45, 0x0a, 0x15, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7b, + 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x45, 0x0a, 0x15, 0x41, + 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x6c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, + 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, + 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x67, 0x0a, 0x16, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, - 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x22, 0x6c, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc5, - 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, + 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xc3, + 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, + 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, + 0x52, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x67, 0x65, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x6d, 0x69, 0x6e, 0x65, 0x22, 0x77, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x08, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x78, 0x0a, + 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x36, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x8c, + 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, + 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x71, 0x0a, + 0x15, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x42, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x5a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x68, 0x0a, 0x0b, 0x47, - 0x72, 0x6f, 0x75, 0x70, 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, 0x43, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x0b, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, + 0x22, 0x18, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7d, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x83, 0x01, - 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x6c, 0x64, - 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x6c, - 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6c, - 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x41, 0x6c, - 0x69, 0x61, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x41, 0x0a, 0x0f, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, + 0x69, 0x67, 0x68, 0x74, 0x48, 0x00, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, + 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x49, 0x0a, + 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x67, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, 0x41, 0x62, 0x6f, 0x72, - 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x67, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x31, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, - 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, - 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, - 0x0a, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, - 0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x22, - 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0x73, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x86, 0x01, + 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, - 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, - 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x46, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, - 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, + 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x67, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x89, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, - 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x6c, 0x0a, 0x19, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x18, 0x0a, + 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, + 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x06, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x68, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x56, 0x0a, 0x0b, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, + 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1c, + 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x0f, + 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, + 0x12, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, + 0x1b, 0x0a, 0x19, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x0a, 0x15, + 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, + 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x77, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x0a, + 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, + 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, - 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xba, 0x02, 0x0a, 0x16, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, - 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x57, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x22, 0x69, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x58, 0x0a, - 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, - 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, - 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, - 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x12, 0x0a, - 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, - 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xba, 0x02, 0x0a, 0x16, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, + 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, + 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, + 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, + 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x46, 0x0a, + 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, + 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, + 0x6f, 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xba, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, + 0x74, 0x61, 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, 0x57, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, + 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x69, 0x0a, 0x16, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, - 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x57, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, - 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x54, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x58, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x22, 0x80, 0x02, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, - 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, - 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, - 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x22, 0x4c, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, - 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, - 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, - 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x36, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5b, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, - 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x22, 0x80, 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, - 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, - 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, - 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, - 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x5c, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5e, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, - 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, + 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x22, 0x74, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, + 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xba, 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, - 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, - 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, - 0x61, 0x74, 0x61, 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, 0x60, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x72, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x22, 0x0a, 0x20, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, - 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, + 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x80, 0x02, 0x0a, + 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, + 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, + 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, + 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, + 0x5d, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x4c, + 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x12, 0x61, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, - 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x11, 0x61, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x22, 0x8f, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, - 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x74, 0x0a, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, - 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x10, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x4d, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, + 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7a, + 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, + 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x03, + 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, + 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x22, 0x5b, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, + 0x80, 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, + 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, + 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, + 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x22, 0x5c, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, + 0x5e, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, + 0xcc, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, + 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb3, - 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1a, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, - 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x18, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x22, 0x7c, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, - 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x22, 0xcf, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, + 0x60, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x22, 0x72, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x22, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x1c, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1a, + 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xb1, 0x01, + 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, + 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, + 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, + 0x00, 0x52, 0x10, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x4d, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x19, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, - 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x17, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x22, 0x3a, 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x24, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, + 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x27, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x18, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x61, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, + 0x7c, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xcf, 0x01, + 0x0a, 0x22, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x19, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, + 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, + 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0x3a, 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x25, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x65, 0x0a, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, + 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, - 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x48, 0x00, 0x52, - 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x12, 0x0a, 0x03, - 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, - 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x19, 0x47, - 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x34, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x4e, 0x0a, 0x19, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x38, 0x73, 0x2e, - 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x35, 0x0a, 0x19, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, - 0x8c, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, - 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x22, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, + 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, + 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, + 0x6b, 0x22, 0x34, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x4e, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x7a, + 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, + 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x22, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x21, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x72, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x15, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x79, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, - 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x22, 0xab, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x14, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, - 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, - 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x58, - 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, + 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x17, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x22, 0x79, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x1f, + 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x6a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x14, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, + 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, + 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x58, 0x0a, 0x11, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, - 0x6f, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc9, 0x01, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04, - 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, - 0x6f, 0x6c, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, - 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, - 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x52, 0x0a, 0x06, 0x43, - 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x22, - 0xfd, 0x01, 0x0a, 0x0c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x4b, - 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x00, 0x52, - 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x54, 0x0a, 0x0d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, - 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x72, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x11, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x45, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, - 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xfe, - 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x4b, - 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x00, 0x52, - 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, + 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, + 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x43, + 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x55, 0x0a, 0x0e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, - 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x58, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, + 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x58, + 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x52, 0x0a, 0x06, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, + 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, + 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, + 0x69, 0x6d, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x47, + 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, + 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, + 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x54, 0x0a, 0x0d, 0x47, 0x72, + 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, - 0x22, 0x59, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, + 0x22, 0x72, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x6f, + 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, + 0x73, 0x12, 0x56, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x0d, 0x52, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, + 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, + 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, + 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x0e, 0x52, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, + 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, + 0x65, 0x22, 0x58, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x15, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, - 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, - 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x68, 0x0a, 0x15, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xaa, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x74, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, - 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x70, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, - 0x0a, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, + 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, + 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x57, + 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x68, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x12, + 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x74, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, + 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3f, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, - 0x6b, 0x0a, 0x16, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x17, - 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, - 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2a, 0x51, 0x0a, 0x09, 0x52, 0x61, 0x77, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, - 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, - 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, - 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x02, 0x32, 0xee, 0x59, 0x0a, - 0x0c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x83, 0x01, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, + 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x70, + 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x58, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0c, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x6b, 0x0a, 0x16, 0x52, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x17, 0x52, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x2a, 0x51, 0x0a, 0x09, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, + 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, + 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, + 0x5f, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x02, 0x32, 0xc5, 0x57, 0x0a, 0x0c, 0x4b, 0x61, 0x72, 0x67, + 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x37, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, + 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, + 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x33, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, + 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, + 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x47, 0x65, - 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x2e, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x71, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, + 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3f, 0x2e, 0x61, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x7c, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7a, 0x0a, + 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x83, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, - 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, - 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, + 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, + 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, + 0x01, 0x0a, 0x0e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x62, 0x6f, 0x72, 0x74, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, + 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, - 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x65, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, + 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x36, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x30, 0x01, 0x12, 0x94, 0x01, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3c, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7a, 0x0a, 0x0b, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, + 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, - 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7d, 0x0a, - 0x0c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, - 0x0e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x0e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x36, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, - 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, - 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, - 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, - 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, + 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, - 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, + 0x83, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, - 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, - 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, - 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, - 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x35, 0x2e, 0x61, 0x6b, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, - 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x38, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3a, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, + 0x79, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x41, 0x62, 0x6f, + 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, - 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, - 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, - 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, + 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, + 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, - 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, + 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x35, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, + 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, + 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, + 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, + 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, + 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3c, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x98, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, - 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, - 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3b, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, + 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, + 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, + 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 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, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 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, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3e, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0xad, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x12, 0x45, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0xa7, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, + 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x98, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x1d, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xad, - 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, - 0x45, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x47, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa7, - 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x46, 0x2e, 0x61, 0x6b, 0x75, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, + 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, + 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, + 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x47, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x37, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa4, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x73, 0x12, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, - 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, - 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa4, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x07, - 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x61, 0x73, 0x6b, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x17, + 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x05, - 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x06, - 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, + 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, + 0x0a, 0x05, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, + 0x0a, 0x06, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, + 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, + 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, - 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a, - 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x34, 0x2e, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x36, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x93, 0x02, - 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2f, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x3b, 0x73, 0x76, 0x63, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0xa2, 0x02, 0x04, 0x41, 0x49, 0x4b, 0x53, 0xaa, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x49, 0x6f, 0x2e, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x20, 0x41, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x2c, - 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x24, 0x41, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x3a, 0x3a, 0x49, 0x6f, 0x3a, 0x3a, 0x4b, 0x61, 0x72, 0x67, 0x6f, - 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x7a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, + 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, + 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x36, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, + 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, + 0x93, 0x02, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2f, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x73, 0x76, 0x63, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0xa2, 0x02, 0x04, 0x41, 0x49, 0x4b, 0x53, 0xaa, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x49, 0x6f, 0x2e, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x20, 0x41, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, + 0x02, 0x2c, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, + 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x24, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x3a, 0x3a, 0x49, 0x6f, 0x3a, 0x3a, 0x4b, 0x61, 0x72, + 0x67, 0x6f, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -13304,7 +12706,7 @@ func file_api_service_v1alpha1_service_proto_rawDescGZIP() []byte { } var file_api_service_v1alpha1_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_api_service_v1alpha1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 191) +var file_api_service_v1alpha1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 184) var file_api_service_v1alpha1_service_proto_goTypes = []interface{}{ (RawFormat)(0), // 0: akuity.io.kargo.service.v1alpha1.RawFormat (*ComponentVersions)(nil), // 1: akuity.io.kargo.service.v1alpha1.ComponentVersions @@ -13345,470 +12747,442 @@ var file_api_service_v1alpha1_service_proto_goTypes = []interface{}{ (*WatchStagesResponse)(nil), // 36: akuity.io.kargo.service.v1alpha1.WatchStagesResponse (*DeleteStageRequest)(nil), // 37: akuity.io.kargo.service.v1alpha1.DeleteStageRequest (*DeleteStageResponse)(nil), // 38: akuity.io.kargo.service.v1alpha1.DeleteStageResponse - (*StageSummary)(nil), // 39: akuity.io.kargo.service.v1alpha1.StageSummary - (*StageSpecSummary)(nil), // 40: akuity.io.kargo.service.v1alpha1.StageSpecSummary - (*StageStatusSummary)(nil), // 41: akuity.io.kargo.service.v1alpha1.StageStatusSummary - (*ListStageSummariesRequest)(nil), // 42: akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest - (*ListStageSummariesResponse)(nil), // 43: akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse - (*WatchStageSummariesRequest)(nil), // 44: akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest - (*WatchStageSummariesResponse)(nil), // 45: akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse - (*GetClusterConfigRequest)(nil), // 46: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest - (*GetClusterConfigResponse)(nil), // 47: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse - (*DeleteClusterConfigRequest)(nil), // 48: akuity.io.kargo.service.v1alpha1.DeleteClusterConfigRequest - (*DeleteClusterConfigResponse)(nil), // 49: akuity.io.kargo.service.v1alpha1.DeleteClusterConfigResponse - (*WatchClusterConfigRequest)(nil), // 50: akuity.io.kargo.service.v1alpha1.WatchClusterConfigRequest - (*WatchClusterConfigResponse)(nil), // 51: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse - (*ListPromotionsRequest)(nil), // 52: akuity.io.kargo.service.v1alpha1.ListPromotionsRequest - (*ListPromotionsResponse)(nil), // 53: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse - (*WatchPromotionsRequest)(nil), // 54: akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest - (*WatchPromotionsResponse)(nil), // 55: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse - (*GetPromotionRequest)(nil), // 56: akuity.io.kargo.service.v1alpha1.GetPromotionRequest - (*GetPromotionResponse)(nil), // 57: akuity.io.kargo.service.v1alpha1.GetPromotionResponse - (*WatchPromotionRequest)(nil), // 58: akuity.io.kargo.service.v1alpha1.WatchPromotionRequest - (*WatchPromotionResponse)(nil), // 59: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse - (*AbortPromotionRequest)(nil), // 60: akuity.io.kargo.service.v1alpha1.AbortPromotionRequest - (*AbortPromotionResponse)(nil), // 61: akuity.io.kargo.service.v1alpha1.AbortPromotionResponse - (*DeleteProjectRequest)(nil), // 62: akuity.io.kargo.service.v1alpha1.DeleteProjectRequest - (*DeleteProjectResponse)(nil), // 63: akuity.io.kargo.service.v1alpha1.DeleteProjectResponse - (*GetProjectRequest)(nil), // 64: akuity.io.kargo.service.v1alpha1.GetProjectRequest - (*GetProjectResponse)(nil), // 65: akuity.io.kargo.service.v1alpha1.GetProjectResponse - (*ListProjectsRequest)(nil), // 66: akuity.io.kargo.service.v1alpha1.ListProjectsRequest - (*ListProjectsResponse)(nil), // 67: akuity.io.kargo.service.v1alpha1.ListProjectsResponse - (*GetProjectConfigRequest)(nil), // 68: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest - (*GetProjectConfigResponse)(nil), // 69: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse - (*DeleteProjectConfigRequest)(nil), // 70: akuity.io.kargo.service.v1alpha1.DeleteProjectConfigRequest - (*DeleteProjectConfigResponse)(nil), // 71: akuity.io.kargo.service.v1alpha1.DeleteProjectConfigResponse - (*WatchProjectConfigRequest)(nil), // 72: akuity.io.kargo.service.v1alpha1.WatchProjectConfigRequest - (*WatchProjectConfigResponse)(nil), // 73: akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse - (*ApproveFreightRequest)(nil), // 74: akuity.io.kargo.service.v1alpha1.ApproveFreightRequest - (*ApproveFreightResponse)(nil), // 75: akuity.io.kargo.service.v1alpha1.ApproveFreightResponse - (*DeleteFreightRequest)(nil), // 76: akuity.io.kargo.service.v1alpha1.DeleteFreightRequest - (*DeleteFreightResponse)(nil), // 77: akuity.io.kargo.service.v1alpha1.DeleteFreightResponse - (*GetFreightRequest)(nil), // 78: akuity.io.kargo.service.v1alpha1.GetFreightRequest - (*GetFreightResponse)(nil), // 79: akuity.io.kargo.service.v1alpha1.GetFreightResponse - (*WatchFreightRequest)(nil), // 80: akuity.io.kargo.service.v1alpha1.WatchFreightRequest - (*WatchFreightResponse)(nil), // 81: akuity.io.kargo.service.v1alpha1.WatchFreightResponse - (*PromoteToStageRequest)(nil), // 82: akuity.io.kargo.service.v1alpha1.PromoteToStageRequest - (*PromoteToStageResponse)(nil), // 83: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse - (*PromoteDownstreamRequest)(nil), // 84: akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest - (*PromoteDownstreamResponse)(nil), // 85: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse - (*QueryFreightRequest)(nil), // 86: akuity.io.kargo.service.v1alpha1.QueryFreightRequest - (*QueryFreightResponse)(nil), // 87: akuity.io.kargo.service.v1alpha1.QueryFreightResponse - (*FreightList)(nil), // 88: akuity.io.kargo.service.v1alpha1.FreightList - (*UpdateFreightAliasRequest)(nil), // 89: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest - (*UpdateFreightAliasResponse)(nil), // 90: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse - (*ReverifyRequest)(nil), // 91: akuity.io.kargo.service.v1alpha1.ReverifyRequest - (*ReverifyResponse)(nil), // 92: akuity.io.kargo.service.v1alpha1.ReverifyResponse - (*AbortVerificationRequest)(nil), // 93: akuity.io.kargo.service.v1alpha1.AbortVerificationRequest - (*AbortVerificationResponse)(nil), // 94: akuity.io.kargo.service.v1alpha1.AbortVerificationResponse - (*ListWarehousesRequest)(nil), // 95: akuity.io.kargo.service.v1alpha1.ListWarehousesRequest - (*ListWarehousesResponse)(nil), // 96: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse - (*GetWarehouseRequest)(nil), // 97: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest - (*GetWarehouseResponse)(nil), // 98: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse - (*WatchWarehousesRequest)(nil), // 99: akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest - (*WatchWarehousesResponse)(nil), // 100: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse - (*DeleteWarehouseRequest)(nil), // 101: akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest - (*DeleteWarehouseResponse)(nil), // 102: akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse - (*CreateConfigMapRequest)(nil), // 103: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest - (*CreateConfigMapResponse)(nil), // 104: akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse - (*DeleteConfigMapRequest)(nil), // 105: akuity.io.kargo.service.v1alpha1.DeleteConfigMapRequest - (*DeleteConfigMapResponse)(nil), // 106: akuity.io.kargo.service.v1alpha1.DeleteConfigMapResponse - (*ListConfigMapsRequest)(nil), // 107: akuity.io.kargo.service.v1alpha1.ListConfigMapsRequest - (*ListConfigMapsResponse)(nil), // 108: akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse - (*GetConfigMapRequest)(nil), // 109: akuity.io.kargo.service.v1alpha1.GetConfigMapRequest - (*GetConfigMapResponse)(nil), // 110: akuity.io.kargo.service.v1alpha1.GetConfigMapResponse - (*UpdateConfigMapRequest)(nil), // 111: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest - (*UpdateConfigMapResponse)(nil), // 112: akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse - (*CreateRepoCredentialsRequest)(nil), // 113: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsRequest - (*CreateRepoCredentialsResponse)(nil), // 114: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse - (*DeleteRepoCredentialsRequest)(nil), // 115: akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsRequest - (*DeleteRepoCredentialsResponse)(nil), // 116: akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsResponse - (*GetRepoCredentialsRequest)(nil), // 117: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest - (*GetRepoCredentialsResponse)(nil), // 118: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse - (*ListRepoCredentialsRequest)(nil), // 119: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsRequest - (*ListRepoCredentialsResponse)(nil), // 120: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse - (*UpdateRepoCredentialsRequest)(nil), // 121: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsRequest - (*UpdateRepoCredentialsResponse)(nil), // 122: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse - (*ListGenericCredentialsRequest)(nil), // 123: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsRequest - (*ListGenericCredentialsResponse)(nil), // 124: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse - (*CreateGenericCredentialsRequest)(nil), // 125: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest - (*CreateGenericCredentialsResponse)(nil), // 126: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse - (*UpdateGenericCredentialsRequest)(nil), // 127: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest - (*UpdateGenericCredentialsResponse)(nil), // 128: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse - (*DeleteGenericCredentialsRequest)(nil), // 129: akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsRequest - (*DeleteGenericCredentialsResponse)(nil), // 130: akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsResponse - (*ListAnalysisTemplatesRequest)(nil), // 131: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest - (*ListAnalysisTemplatesResponse)(nil), // 132: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse - (*GetAnalysisTemplateRequest)(nil), // 133: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest - (*GetAnalysisTemplateResponse)(nil), // 134: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse - (*DeleteAnalysisTemplateRequest)(nil), // 135: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest - (*DeleteAnalysisTemplateResponse)(nil), // 136: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse - (*ListClusterAnalysisTemplatesRequest)(nil), // 137: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest - (*ListClusterAnalysisTemplatesResponse)(nil), // 138: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse - (*GetClusterAnalysisTemplateRequest)(nil), // 139: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest - (*GetClusterAnalysisTemplateResponse)(nil), // 140: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse - (*DeleteClusterAnalysisTemplateRequest)(nil), // 141: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest - (*DeleteClusterAnalysisTemplateResponse)(nil), // 142: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse - (*GetAnalysisRunRequest)(nil), // 143: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest - (*GetAnalysisRunResponse)(nil), // 144: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse - (*GetAnalysisRunLogsRequest)(nil), // 145: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest - (*GetAnalysisRunLogsResponse)(nil), // 146: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse - (*ListProjectEventsRequest)(nil), // 147: akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest - (*ListProjectEventsResponse)(nil), // 148: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse - (*ListPromotionTasksRequest)(nil), // 149: akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest - (*ListPromotionTasksResponse)(nil), // 150: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse - (*GetPromotionTaskRequest)(nil), // 151: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest - (*GetPromotionTaskResponse)(nil), // 152: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse - (*ListClusterPromotionTasksRequest)(nil), // 153: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest - (*ListClusterPromotionTasksResponse)(nil), // 154: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse - (*GetClusterPromotionTaskRequest)(nil), // 155: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest - (*GetClusterPromotionTaskResponse)(nil), // 156: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse - (*CreateRoleRequest)(nil), // 157: akuity.io.kargo.service.v1alpha1.CreateRoleRequest - (*CreateRoleResponse)(nil), // 158: akuity.io.kargo.service.v1alpha1.CreateRoleResponse - (*DeleteRoleRequest)(nil), // 159: akuity.io.kargo.service.v1alpha1.DeleteRoleRequest - (*DeleteRoleResponse)(nil), // 160: akuity.io.kargo.service.v1alpha1.DeleteRoleResponse - (*GetRoleRequest)(nil), // 161: akuity.io.kargo.service.v1alpha1.GetRoleRequest - (*GetRoleResponse)(nil), // 162: akuity.io.kargo.service.v1alpha1.GetRoleResponse - (*Claims)(nil), // 163: akuity.io.kargo.service.v1alpha1.Claims - (*GrantRequest)(nil), // 164: akuity.io.kargo.service.v1alpha1.GrantRequest - (*GrantResponse)(nil), // 165: akuity.io.kargo.service.v1alpha1.GrantResponse - (*ListRolesRequest)(nil), // 166: akuity.io.kargo.service.v1alpha1.ListRolesRequest - (*ListRolesResponse)(nil), // 167: akuity.io.kargo.service.v1alpha1.ListRolesResponse - (*RevokeRequest)(nil), // 168: akuity.io.kargo.service.v1alpha1.RevokeRequest - (*RevokeResponse)(nil), // 169: akuity.io.kargo.service.v1alpha1.RevokeResponse - (*UpdateRoleRequest)(nil), // 170: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest - (*UpdateRoleResponse)(nil), // 171: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse - (*CreateAPITokenRequest)(nil), // 172: akuity.io.kargo.service.v1alpha1.CreateAPITokenRequest - (*CreateAPITokenResponse)(nil), // 173: akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse - (*DeleteAPITokenRequest)(nil), // 174: akuity.io.kargo.service.v1alpha1.DeleteAPITokenRequest - (*DeleteAPITokenResponse)(nil), // 175: akuity.io.kargo.service.v1alpha1.DeleteAPITokenResponse - (*GetAPITokenRequest)(nil), // 176: akuity.io.kargo.service.v1alpha1.GetAPITokenRequest - (*GetAPITokenResponse)(nil), // 177: akuity.io.kargo.service.v1alpha1.GetAPITokenResponse - (*ListAPITokensRequest)(nil), // 178: akuity.io.kargo.service.v1alpha1.ListAPITokensRequest - (*ListAPITokensResponse)(nil), // 179: akuity.io.kargo.service.v1alpha1.ListAPITokensResponse - (*RefreshResourceRequest)(nil), // 180: akuity.io.kargo.service.v1alpha1.RefreshResourceRequest - (*RefreshResourceResponse)(nil), // 181: akuity.io.kargo.service.v1alpha1.RefreshResourceResponse - nil, // 182: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry - nil, // 183: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry - nil, // 184: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry - nil, // 185: akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry - nil, // 186: akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse.HealthOutputsEntry - nil, // 187: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry - nil, // 188: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.DataEntry - nil, // 189: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.DataEntry - nil, // 190: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.DataEntry - nil, // 191: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.DataEntry - (*timestamppb.Timestamp)(nil), // 192: google.protobuf.Timestamp - (*v1alpha1.Stage)(nil), // 193: github.com.akuity.kargo.api.v1alpha1.Stage - (*v1.ObjectMeta)(nil), // 194: k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta - (*v1alpha1.FreightRequest)(nil), // 195: github.com.akuity.kargo.api.v1alpha1.FreightRequest - (*v1.Condition)(nil), // 196: k8s.io.apimachinery.pkg.apis.meta.v1.Condition - (*v1alpha1.FreightCollection)(nil), // 197: github.com.akuity.kargo.api.v1alpha1.FreightCollection - (*v1alpha1.PromotionReference)(nil), // 198: github.com.akuity.kargo.api.v1alpha1.PromotionReference - (*v1alpha1.Health)(nil), // 199: github.com.akuity.kargo.api.v1alpha1.Health - (*v1alpha1.ClusterConfig)(nil), // 200: github.com.akuity.kargo.api.v1alpha1.ClusterConfig - (*v1alpha1.Promotion)(nil), // 201: github.com.akuity.kargo.api.v1alpha1.Promotion - (*v1alpha1.Project)(nil), // 202: github.com.akuity.kargo.api.v1alpha1.Project - (*v1alpha1.ProjectConfig)(nil), // 203: github.com.akuity.kargo.api.v1alpha1.ProjectConfig - (*v1alpha1.Freight)(nil), // 204: github.com.akuity.kargo.api.v1alpha1.Freight - (*v1alpha1.Warehouse)(nil), // 205: github.com.akuity.kargo.api.v1alpha1.Warehouse - (*v11.ConfigMap)(nil), // 206: k8s.io.api.core.v1.ConfigMap - (*v11.Secret)(nil), // 207: k8s.io.api.core.v1.Secret - (*v1alpha11.AnalysisTemplate)(nil), // 208: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate - (*v1alpha11.ClusterAnalysisTemplate)(nil), // 209: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate - (*v1alpha11.AnalysisRun)(nil), // 210: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun - (*v11.Event)(nil), // 211: k8s.io.api.core.v1.Event - (*v1alpha1.PromotionTask)(nil), // 212: github.com.akuity.kargo.api.v1alpha1.PromotionTask - (*v1alpha1.ClusterPromotionTask)(nil), // 213: github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask - (*v1alpha12.Role)(nil), // 214: github.com.akuity.kargo.api.rbac.v1alpha1.Role - (*v1alpha12.RoleResources)(nil), // 215: github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources - (*v1alpha12.Claim)(nil), // 216: github.com.akuity.kargo.api.rbac.v1alpha1.Claim - (*v1alpha12.ResourceDetails)(nil), // 217: github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails - (*anypb.Any)(nil), // 218: google.protobuf.Any + (*GetClusterConfigRequest)(nil), // 39: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest + (*GetClusterConfigResponse)(nil), // 40: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse + (*DeleteClusterConfigRequest)(nil), // 41: akuity.io.kargo.service.v1alpha1.DeleteClusterConfigRequest + (*DeleteClusterConfigResponse)(nil), // 42: akuity.io.kargo.service.v1alpha1.DeleteClusterConfigResponse + (*WatchClusterConfigRequest)(nil), // 43: akuity.io.kargo.service.v1alpha1.WatchClusterConfigRequest + (*WatchClusterConfigResponse)(nil), // 44: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse + (*ListPromotionsRequest)(nil), // 45: akuity.io.kargo.service.v1alpha1.ListPromotionsRequest + (*ListPromotionsResponse)(nil), // 46: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse + (*WatchPromotionsRequest)(nil), // 47: akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest + (*WatchPromotionsResponse)(nil), // 48: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse + (*GetPromotionRequest)(nil), // 49: akuity.io.kargo.service.v1alpha1.GetPromotionRequest + (*GetPromotionResponse)(nil), // 50: akuity.io.kargo.service.v1alpha1.GetPromotionResponse + (*WatchPromotionRequest)(nil), // 51: akuity.io.kargo.service.v1alpha1.WatchPromotionRequest + (*WatchPromotionResponse)(nil), // 52: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse + (*AbortPromotionRequest)(nil), // 53: akuity.io.kargo.service.v1alpha1.AbortPromotionRequest + (*AbortPromotionResponse)(nil), // 54: akuity.io.kargo.service.v1alpha1.AbortPromotionResponse + (*DeleteProjectRequest)(nil), // 55: akuity.io.kargo.service.v1alpha1.DeleteProjectRequest + (*DeleteProjectResponse)(nil), // 56: akuity.io.kargo.service.v1alpha1.DeleteProjectResponse + (*GetProjectRequest)(nil), // 57: akuity.io.kargo.service.v1alpha1.GetProjectRequest + (*GetProjectResponse)(nil), // 58: akuity.io.kargo.service.v1alpha1.GetProjectResponse + (*ListProjectsRequest)(nil), // 59: akuity.io.kargo.service.v1alpha1.ListProjectsRequest + (*ListProjectsResponse)(nil), // 60: akuity.io.kargo.service.v1alpha1.ListProjectsResponse + (*GetProjectConfigRequest)(nil), // 61: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest + (*GetProjectConfigResponse)(nil), // 62: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse + (*DeleteProjectConfigRequest)(nil), // 63: akuity.io.kargo.service.v1alpha1.DeleteProjectConfigRequest + (*DeleteProjectConfigResponse)(nil), // 64: akuity.io.kargo.service.v1alpha1.DeleteProjectConfigResponse + (*WatchProjectConfigRequest)(nil), // 65: akuity.io.kargo.service.v1alpha1.WatchProjectConfigRequest + (*WatchProjectConfigResponse)(nil), // 66: akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse + (*ApproveFreightRequest)(nil), // 67: akuity.io.kargo.service.v1alpha1.ApproveFreightRequest + (*ApproveFreightResponse)(nil), // 68: akuity.io.kargo.service.v1alpha1.ApproveFreightResponse + (*DeleteFreightRequest)(nil), // 69: akuity.io.kargo.service.v1alpha1.DeleteFreightRequest + (*DeleteFreightResponse)(nil), // 70: akuity.io.kargo.service.v1alpha1.DeleteFreightResponse + (*GetFreightRequest)(nil), // 71: akuity.io.kargo.service.v1alpha1.GetFreightRequest + (*GetFreightResponse)(nil), // 72: akuity.io.kargo.service.v1alpha1.GetFreightResponse + (*WatchFreightRequest)(nil), // 73: akuity.io.kargo.service.v1alpha1.WatchFreightRequest + (*WatchFreightResponse)(nil), // 74: akuity.io.kargo.service.v1alpha1.WatchFreightResponse + (*PromoteToStageRequest)(nil), // 75: akuity.io.kargo.service.v1alpha1.PromoteToStageRequest + (*PromoteToStageResponse)(nil), // 76: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse + (*PromoteDownstreamRequest)(nil), // 77: akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest + (*PromoteDownstreamResponse)(nil), // 78: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse + (*QueryFreightRequest)(nil), // 79: akuity.io.kargo.service.v1alpha1.QueryFreightRequest + (*QueryFreightResponse)(nil), // 80: akuity.io.kargo.service.v1alpha1.QueryFreightResponse + (*FreightList)(nil), // 81: akuity.io.kargo.service.v1alpha1.FreightList + (*UpdateFreightAliasRequest)(nil), // 82: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest + (*UpdateFreightAliasResponse)(nil), // 83: akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse + (*ReverifyRequest)(nil), // 84: akuity.io.kargo.service.v1alpha1.ReverifyRequest + (*ReverifyResponse)(nil), // 85: akuity.io.kargo.service.v1alpha1.ReverifyResponse + (*AbortVerificationRequest)(nil), // 86: akuity.io.kargo.service.v1alpha1.AbortVerificationRequest + (*AbortVerificationResponse)(nil), // 87: akuity.io.kargo.service.v1alpha1.AbortVerificationResponse + (*ListWarehousesRequest)(nil), // 88: akuity.io.kargo.service.v1alpha1.ListWarehousesRequest + (*ListWarehousesResponse)(nil), // 89: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse + (*GetWarehouseRequest)(nil), // 90: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest + (*GetWarehouseResponse)(nil), // 91: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse + (*WatchWarehousesRequest)(nil), // 92: akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest + (*WatchWarehousesResponse)(nil), // 93: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse + (*DeleteWarehouseRequest)(nil), // 94: akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest + (*DeleteWarehouseResponse)(nil), // 95: akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse + (*CreateConfigMapRequest)(nil), // 96: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest + (*CreateConfigMapResponse)(nil), // 97: akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse + (*DeleteConfigMapRequest)(nil), // 98: akuity.io.kargo.service.v1alpha1.DeleteConfigMapRequest + (*DeleteConfigMapResponse)(nil), // 99: akuity.io.kargo.service.v1alpha1.DeleteConfigMapResponse + (*ListConfigMapsRequest)(nil), // 100: akuity.io.kargo.service.v1alpha1.ListConfigMapsRequest + (*ListConfigMapsResponse)(nil), // 101: akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse + (*GetConfigMapRequest)(nil), // 102: akuity.io.kargo.service.v1alpha1.GetConfigMapRequest + (*GetConfigMapResponse)(nil), // 103: akuity.io.kargo.service.v1alpha1.GetConfigMapResponse + (*UpdateConfigMapRequest)(nil), // 104: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest + (*UpdateConfigMapResponse)(nil), // 105: akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse + (*CreateRepoCredentialsRequest)(nil), // 106: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsRequest + (*CreateRepoCredentialsResponse)(nil), // 107: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse + (*DeleteRepoCredentialsRequest)(nil), // 108: akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsRequest + (*DeleteRepoCredentialsResponse)(nil), // 109: akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsResponse + (*GetRepoCredentialsRequest)(nil), // 110: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest + (*GetRepoCredentialsResponse)(nil), // 111: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse + (*ListRepoCredentialsRequest)(nil), // 112: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsRequest + (*ListRepoCredentialsResponse)(nil), // 113: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse + (*UpdateRepoCredentialsRequest)(nil), // 114: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsRequest + (*UpdateRepoCredentialsResponse)(nil), // 115: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse + (*ListGenericCredentialsRequest)(nil), // 116: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsRequest + (*ListGenericCredentialsResponse)(nil), // 117: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse + (*CreateGenericCredentialsRequest)(nil), // 118: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest + (*CreateGenericCredentialsResponse)(nil), // 119: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse + (*UpdateGenericCredentialsRequest)(nil), // 120: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest + (*UpdateGenericCredentialsResponse)(nil), // 121: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse + (*DeleteGenericCredentialsRequest)(nil), // 122: akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsRequest + (*DeleteGenericCredentialsResponse)(nil), // 123: akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsResponse + (*ListAnalysisTemplatesRequest)(nil), // 124: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest + (*ListAnalysisTemplatesResponse)(nil), // 125: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse + (*GetAnalysisTemplateRequest)(nil), // 126: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest + (*GetAnalysisTemplateResponse)(nil), // 127: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse + (*DeleteAnalysisTemplateRequest)(nil), // 128: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest + (*DeleteAnalysisTemplateResponse)(nil), // 129: akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse + (*ListClusterAnalysisTemplatesRequest)(nil), // 130: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest + (*ListClusterAnalysisTemplatesResponse)(nil), // 131: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse + (*GetClusterAnalysisTemplateRequest)(nil), // 132: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest + (*GetClusterAnalysisTemplateResponse)(nil), // 133: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse + (*DeleteClusterAnalysisTemplateRequest)(nil), // 134: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest + (*DeleteClusterAnalysisTemplateResponse)(nil), // 135: akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse + (*GetAnalysisRunRequest)(nil), // 136: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest + (*GetAnalysisRunResponse)(nil), // 137: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse + (*GetAnalysisRunLogsRequest)(nil), // 138: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest + (*GetAnalysisRunLogsResponse)(nil), // 139: akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse + (*ListProjectEventsRequest)(nil), // 140: akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest + (*ListProjectEventsResponse)(nil), // 141: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse + (*ListPromotionTasksRequest)(nil), // 142: akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest + (*ListPromotionTasksResponse)(nil), // 143: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse + (*GetPromotionTaskRequest)(nil), // 144: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest + (*GetPromotionTaskResponse)(nil), // 145: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse + (*ListClusterPromotionTasksRequest)(nil), // 146: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest + (*ListClusterPromotionTasksResponse)(nil), // 147: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse + (*GetClusterPromotionTaskRequest)(nil), // 148: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest + (*GetClusterPromotionTaskResponse)(nil), // 149: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse + (*CreateRoleRequest)(nil), // 150: akuity.io.kargo.service.v1alpha1.CreateRoleRequest + (*CreateRoleResponse)(nil), // 151: akuity.io.kargo.service.v1alpha1.CreateRoleResponse + (*DeleteRoleRequest)(nil), // 152: akuity.io.kargo.service.v1alpha1.DeleteRoleRequest + (*DeleteRoleResponse)(nil), // 153: akuity.io.kargo.service.v1alpha1.DeleteRoleResponse + (*GetRoleRequest)(nil), // 154: akuity.io.kargo.service.v1alpha1.GetRoleRequest + (*GetRoleResponse)(nil), // 155: akuity.io.kargo.service.v1alpha1.GetRoleResponse + (*Claims)(nil), // 156: akuity.io.kargo.service.v1alpha1.Claims + (*GrantRequest)(nil), // 157: akuity.io.kargo.service.v1alpha1.GrantRequest + (*GrantResponse)(nil), // 158: akuity.io.kargo.service.v1alpha1.GrantResponse + (*ListRolesRequest)(nil), // 159: akuity.io.kargo.service.v1alpha1.ListRolesRequest + (*ListRolesResponse)(nil), // 160: akuity.io.kargo.service.v1alpha1.ListRolesResponse + (*RevokeRequest)(nil), // 161: akuity.io.kargo.service.v1alpha1.RevokeRequest + (*RevokeResponse)(nil), // 162: akuity.io.kargo.service.v1alpha1.RevokeResponse + (*UpdateRoleRequest)(nil), // 163: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest + (*UpdateRoleResponse)(nil), // 164: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse + (*CreateAPITokenRequest)(nil), // 165: akuity.io.kargo.service.v1alpha1.CreateAPITokenRequest + (*CreateAPITokenResponse)(nil), // 166: akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse + (*DeleteAPITokenRequest)(nil), // 167: akuity.io.kargo.service.v1alpha1.DeleteAPITokenRequest + (*DeleteAPITokenResponse)(nil), // 168: akuity.io.kargo.service.v1alpha1.DeleteAPITokenResponse + (*GetAPITokenRequest)(nil), // 169: akuity.io.kargo.service.v1alpha1.GetAPITokenRequest + (*GetAPITokenResponse)(nil), // 170: akuity.io.kargo.service.v1alpha1.GetAPITokenResponse + (*ListAPITokensRequest)(nil), // 171: akuity.io.kargo.service.v1alpha1.ListAPITokensRequest + (*ListAPITokensResponse)(nil), // 172: akuity.io.kargo.service.v1alpha1.ListAPITokensResponse + (*RefreshResourceRequest)(nil), // 173: akuity.io.kargo.service.v1alpha1.RefreshResourceRequest + (*RefreshResourceResponse)(nil), // 174: akuity.io.kargo.service.v1alpha1.RefreshResourceResponse + nil, // 175: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry + nil, // 176: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry + nil, // 177: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry + nil, // 178: akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry + nil, // 179: akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse.HealthOutputsEntry + nil, // 180: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry + nil, // 181: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.DataEntry + nil, // 182: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.DataEntry + nil, // 183: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.DataEntry + nil, // 184: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.DataEntry + (*timestamppb.Timestamp)(nil), // 185: google.protobuf.Timestamp + (*v1alpha1.Stage)(nil), // 186: github.com.akuity.kargo.api.v1alpha1.Stage + (*v1alpha1.ClusterConfig)(nil), // 187: github.com.akuity.kargo.api.v1alpha1.ClusterConfig + (*v1alpha1.Promotion)(nil), // 188: github.com.akuity.kargo.api.v1alpha1.Promotion + (*v1alpha1.Project)(nil), // 189: github.com.akuity.kargo.api.v1alpha1.Project + (*v1alpha1.ProjectConfig)(nil), // 190: github.com.akuity.kargo.api.v1alpha1.ProjectConfig + (*v1alpha1.Freight)(nil), // 191: github.com.akuity.kargo.api.v1alpha1.Freight + (*v1alpha1.Warehouse)(nil), // 192: github.com.akuity.kargo.api.v1alpha1.Warehouse + (*v1.ConfigMap)(nil), // 193: k8s.io.api.core.v1.ConfigMap + (*v1.Secret)(nil), // 194: k8s.io.api.core.v1.Secret + (*v1alpha11.AnalysisTemplate)(nil), // 195: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate + (*v1alpha11.ClusterAnalysisTemplate)(nil), // 196: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate + (*v1alpha11.AnalysisRun)(nil), // 197: github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun + (*v1.Event)(nil), // 198: k8s.io.api.core.v1.Event + (*v1alpha1.PromotionTask)(nil), // 199: github.com.akuity.kargo.api.v1alpha1.PromotionTask + (*v1alpha1.ClusterPromotionTask)(nil), // 200: github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask + (*v1alpha12.Role)(nil), // 201: github.com.akuity.kargo.api.rbac.v1alpha1.Role + (*v1alpha12.RoleResources)(nil), // 202: github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources + (*v1alpha12.Claim)(nil), // 203: github.com.akuity.kargo.api.rbac.v1alpha1.Claim + (*v1alpha12.ResourceDetails)(nil), // 204: github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails + (*anypb.Any)(nil), // 205: google.protobuf.Any } var file_api_service_v1alpha1_service_proto_depIdxs = []int32{ 2, // 0: akuity.io.kargo.service.v1alpha1.ComponentVersions.server:type_name -> akuity.io.kargo.service.v1alpha1.VersionInfo 2, // 1: akuity.io.kargo.service.v1alpha1.ComponentVersions.cli:type_name -> akuity.io.kargo.service.v1alpha1.VersionInfo - 192, // 2: akuity.io.kargo.service.v1alpha1.VersionInfo.build_time:type_name -> google.protobuf.Timestamp + 185, // 2: akuity.io.kargo.service.v1alpha1.VersionInfo.build_time:type_name -> google.protobuf.Timestamp 2, // 3: akuity.io.kargo.service.v1alpha1.GetVersionInfoResponse.version_info:type_name -> akuity.io.kargo.service.v1alpha1.VersionInfo - 182, // 4: akuity.io.kargo.service.v1alpha1.GetConfigResponse.argocd_shards:type_name -> akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry + 175, // 4: akuity.io.kargo.service.v1alpha1.GetConfigResponse.argocd_shards:type_name -> akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry 10, // 5: akuity.io.kargo.service.v1alpha1.GetPublicConfigResponse.oidc_config:type_name -> akuity.io.kargo.service.v1alpha1.OIDCConfig 14, // 6: akuity.io.kargo.service.v1alpha1.CreateResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.CreateResourceResult 17, // 7: akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResult 20, // 8: akuity.io.kargo.service.v1alpha1.UpdateResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.UpdateResourceResult 23, // 9: akuity.io.kargo.service.v1alpha1.DeleteResourceResponse.results:type_name -> akuity.io.kargo.service.v1alpha1.DeleteResourceResult - 193, // 10: akuity.io.kargo.service.v1alpha1.ListStagesResponse.stages:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage - 183, // 11: akuity.io.kargo.service.v1alpha1.ListImagesResponse.images:type_name -> akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry - 184, // 12: akuity.io.kargo.service.v1alpha1.TagMap.tags:type_name -> akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry - 185, // 13: akuity.io.kargo.service.v1alpha1.ImageStageMap.stages:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry + 186, // 10: akuity.io.kargo.service.v1alpha1.ListStagesResponse.stages:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage + 176, // 11: akuity.io.kargo.service.v1alpha1.ListImagesResponse.images:type_name -> akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry + 177, // 12: akuity.io.kargo.service.v1alpha1.TagMap.tags:type_name -> akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry + 178, // 13: akuity.io.kargo.service.v1alpha1.ImageStageMap.stages:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap.StagesEntry 0, // 14: akuity.io.kargo.service.v1alpha1.GetStageRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 193, // 15: akuity.io.kargo.service.v1alpha1.GetStageResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage - 186, // 16: akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse.health_outputs:type_name -> akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse.HealthOutputsEntry - 193, // 17: akuity.io.kargo.service.v1alpha1.WatchStagesResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage - 194, // 18: akuity.io.kargo.service.v1alpha1.StageSummary.metadata:type_name -> k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta - 40, // 19: akuity.io.kargo.service.v1alpha1.StageSummary.spec:type_name -> akuity.io.kargo.service.v1alpha1.StageSpecSummary - 41, // 20: akuity.io.kargo.service.v1alpha1.StageSummary.status:type_name -> akuity.io.kargo.service.v1alpha1.StageStatusSummary - 195, // 21: akuity.io.kargo.service.v1alpha1.StageSpecSummary.requested_freight:type_name -> github.com.akuity.kargo.api.v1alpha1.FreightRequest - 196, // 22: akuity.io.kargo.service.v1alpha1.StageStatusSummary.conditions:type_name -> k8s.io.apimachinery.pkg.apis.meta.v1.Condition - 197, // 23: akuity.io.kargo.service.v1alpha1.StageStatusSummary.current_freight:type_name -> github.com.akuity.kargo.api.v1alpha1.FreightCollection - 198, // 24: akuity.io.kargo.service.v1alpha1.StageStatusSummary.current_promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionReference - 198, // 25: akuity.io.kargo.service.v1alpha1.StageStatusSummary.last_promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionReference - 199, // 26: akuity.io.kargo.service.v1alpha1.StageStatusSummary.health:type_name -> github.com.akuity.kargo.api.v1alpha1.Health - 39, // 27: akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse.stage_summaries:type_name -> akuity.io.kargo.service.v1alpha1.StageSummary - 39, // 28: akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse.stage_summary:type_name -> akuity.io.kargo.service.v1alpha1.StageSummary - 0, // 29: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 200, // 30: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig - 200, // 31: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig - 201, // 32: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 201, // 33: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 0, // 34: akuity.io.kargo.service.v1alpha1.GetPromotionRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 201, // 35: akuity.io.kargo.service.v1alpha1.GetPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 201, // 36: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 0, // 37: akuity.io.kargo.service.v1alpha1.GetProjectRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 202, // 38: akuity.io.kargo.service.v1alpha1.GetProjectResponse.project:type_name -> github.com.akuity.kargo.api.v1alpha1.Project - 202, // 39: akuity.io.kargo.service.v1alpha1.ListProjectsResponse.projects:type_name -> github.com.akuity.kargo.api.v1alpha1.Project - 0, // 40: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 203, // 41: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig - 203, // 42: akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig - 0, // 43: akuity.io.kargo.service.v1alpha1.GetFreightRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 204, // 44: akuity.io.kargo.service.v1alpha1.GetFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight - 204, // 45: akuity.io.kargo.service.v1alpha1.WatchFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight - 201, // 46: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 201, // 47: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion - 187, // 48: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.groups:type_name -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry - 204, // 49: akuity.io.kargo.service.v1alpha1.FreightList.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight - 205, // 50: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse.warehouses:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse - 0, // 51: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 205, // 52: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse - 205, // 53: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse - 188, // 54: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.DataEntry - 206, // 55: akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap - 206, // 56: akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse.config_maps:type_name -> k8s.io.api.core.v1.ConfigMap - 0, // 57: akuity.io.kargo.service.v1alpha1.GetConfigMapRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 206, // 58: akuity.io.kargo.service.v1alpha1.GetConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap - 189, // 59: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.DataEntry - 206, // 60: akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap - 207, // 61: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 0, // 62: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 207, // 63: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 207, // 64: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 207, // 65: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 207, // 66: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 190, // 67: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.DataEntry - 207, // 68: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 191, // 69: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.DataEntry - 207, // 70: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret - 208, // 71: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse.analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate - 0, // 72: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 208, // 73: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse.analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate - 209, // 74: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse.cluster_analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate - 0, // 75: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 209, // 76: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse.cluster_analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate - 0, // 77: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 210, // 78: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse.analysis_run:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun - 211, // 79: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse.events:type_name -> k8s.io.api.core.v1.Event - 212, // 80: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse.promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask - 0, // 81: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 212, // 82: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask - 213, // 83: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse.cluster_promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask - 0, // 84: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 213, // 85: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask - 214, // 86: akuity.io.kargo.service.v1alpha1.CreateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 214, // 87: akuity.io.kargo.service.v1alpha1.CreateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 0, // 88: akuity.io.kargo.service.v1alpha1.GetRoleRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 214, // 89: akuity.io.kargo.service.v1alpha1.GetRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 215, // 90: akuity.io.kargo.service.v1alpha1.GetRoleResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources - 216, // 91: akuity.io.kargo.service.v1alpha1.Claims.claims:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Claim - 163, // 92: akuity.io.kargo.service.v1alpha1.GrantRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims - 217, // 93: akuity.io.kargo.service.v1alpha1.GrantRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails - 214, // 94: akuity.io.kargo.service.v1alpha1.GrantResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 214, // 95: akuity.io.kargo.service.v1alpha1.ListRolesResponse.roles:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 215, // 96: akuity.io.kargo.service.v1alpha1.ListRolesResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources - 163, // 97: akuity.io.kargo.service.v1alpha1.RevokeRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims - 217, // 98: akuity.io.kargo.service.v1alpha1.RevokeRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails - 214, // 99: akuity.io.kargo.service.v1alpha1.RevokeResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 214, // 100: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 214, // 101: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role - 207, // 102: akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse.token_secret:type_name -> k8s.io.api.core.v1.Secret - 0, // 103: akuity.io.kargo.service.v1alpha1.GetAPITokenRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat - 207, // 104: akuity.io.kargo.service.v1alpha1.GetAPITokenResponse.token_secret:type_name -> k8s.io.api.core.v1.Secret - 207, // 105: akuity.io.kargo.service.v1alpha1.ListAPITokensResponse.token_secrets:type_name -> k8s.io.api.core.v1.Secret - 218, // 106: akuity.io.kargo.service.v1alpha1.RefreshResourceResponse.resource:type_name -> google.protobuf.Any - 6, // 107: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ArgoCDShard - 29, // 108: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.TagMap - 30, // 109: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap - 88, // 110: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.FreightList - 3, // 111: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:input_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoRequest - 5, // 112: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigRequest - 8, // 113: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigRequest - 11, // 114: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:input_type -> akuity.io.kargo.service.v1alpha1.AdminLoginRequest - 13, // 115: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateResourceRequest - 16, // 116: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceRequest - 19, // 117: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceRequest - 22, // 118: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:input_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceRequest - 180, // 119: akuity.io.kargo.service.v1alpha1.KargoService.RefreshResource:input_type -> akuity.io.kargo.service.v1alpha1.RefreshResourceRequest - 25, // 120: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:input_type -> akuity.io.kargo.service.v1alpha1.ListStagesRequest - 42, // 121: akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries:input_type -> akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest - 27, // 122: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:input_type -> akuity.io.kargo.service.v1alpha1.ListImagesRequest - 31, // 123: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:input_type -> akuity.io.kargo.service.v1alpha1.GetStageRequest - 33, // 124: akuity.io.kargo.service.v1alpha1.KargoService.GetStageHealthOutputs:input_type -> akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsRequest - 35, // 125: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:input_type -> akuity.io.kargo.service.v1alpha1.WatchStagesRequest - 44, // 126: akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries:input_type -> akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest - 37, // 127: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:input_type -> akuity.io.kargo.service.v1alpha1.DeleteStageRequest - 46, // 128: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest - 48, // 129: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterConfigRequest - 50, // 130: akuity.io.kargo.service.v1alpha1.KargoService.WatchClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.WatchClusterConfigRequest - 52, // 131: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsRequest - 54, // 132: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest - 56, // 133: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionRequest - 58, // 134: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionRequest - 60, // 135: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:input_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionRequest - 62, // 136: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectRequest - 64, // 137: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectRequest - 66, // 138: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectsRequest - 68, // 139: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest - 70, // 140: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectConfigRequest - 72, // 141: akuity.io.kargo.service.v1alpha1.KargoService.WatchProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.WatchProjectConfigRequest - 74, // 142: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:input_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightRequest - 76, // 143: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:input_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightRequest - 78, // 144: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:input_type -> akuity.io.kargo.service.v1alpha1.GetFreightRequest - 80, // 145: akuity.io.kargo.service.v1alpha1.KargoService.WatchFreight:input_type -> akuity.io.kargo.service.v1alpha1.WatchFreightRequest - 82, // 146: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:input_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageRequest - 84, // 147: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:input_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest - 86, // 148: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:input_type -> akuity.io.kargo.service.v1alpha1.QueryFreightRequest - 89, // 149: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:input_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest - 91, // 150: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:input_type -> akuity.io.kargo.service.v1alpha1.ReverifyRequest - 93, // 151: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:input_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationRequest - 95, // 152: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesRequest - 97, // 153: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseRequest - 99, // 154: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest - 101, // 155: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest - 113, // 156: akuity.io.kargo.service.v1alpha1.KargoService.CreateRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsRequest - 115, // 157: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsRequest - 117, // 158: akuity.io.kargo.service.v1alpha1.KargoService.GetRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest - 119, // 159: akuity.io.kargo.service.v1alpha1.KargoService.ListRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListRepoCredentialsRequest - 121, // 160: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsRequest - 123, // 161: akuity.io.kargo.service.v1alpha1.KargoService.ListGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListGenericCredentialsRequest - 125, // 162: akuity.io.kargo.service.v1alpha1.KargoService.CreateGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest - 127, // 163: akuity.io.kargo.service.v1alpha1.KargoService.UpdateGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest - 129, // 164: akuity.io.kargo.service.v1alpha1.KargoService.DeleteGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsRequest - 103, // 165: akuity.io.kargo.service.v1alpha1.KargoService.CreateConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest - 105, // 166: akuity.io.kargo.service.v1alpha1.KargoService.DeleteConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.DeleteConfigMapRequest - 107, // 167: akuity.io.kargo.service.v1alpha1.KargoService.ListConfigMaps:input_type -> akuity.io.kargo.service.v1alpha1.ListConfigMapsRequest - 109, // 168: akuity.io.kargo.service.v1alpha1.KargoService.GetConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigMapRequest - 111, // 169: akuity.io.kargo.service.v1alpha1.KargoService.UpdateConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest - 131, // 170: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest - 133, // 171: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest - 135, // 172: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest - 137, // 173: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest - 139, // 174: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest - 141, // 175: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest - 143, // 176: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest - 145, // 177: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest - 147, // 178: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest - 149, // 179: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest - 153, // 180: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest - 151, // 181: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest - 155, // 182: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest - 157, // 183: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:input_type -> akuity.io.kargo.service.v1alpha1.CreateRoleRequest - 159, // 184: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleRequest - 161, // 185: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:input_type -> akuity.io.kargo.service.v1alpha1.GetRoleRequest - 164, // 186: akuity.io.kargo.service.v1alpha1.KargoService.Grant:input_type -> akuity.io.kargo.service.v1alpha1.GrantRequest - 166, // 187: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:input_type -> akuity.io.kargo.service.v1alpha1.ListRolesRequest - 168, // 188: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:input_type -> akuity.io.kargo.service.v1alpha1.RevokeRequest - 170, // 189: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleRequest - 172, // 190: akuity.io.kargo.service.v1alpha1.KargoService.CreateAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.CreateAPITokenRequest - 174, // 191: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAPITokenRequest - 176, // 192: akuity.io.kargo.service.v1alpha1.KargoService.GetAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.GetAPITokenRequest - 178, // 193: akuity.io.kargo.service.v1alpha1.KargoService.ListAPITokens:input_type -> akuity.io.kargo.service.v1alpha1.ListAPITokensRequest - 4, // 194: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:output_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoResponse - 7, // 195: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigResponse - 9, // 196: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigResponse - 12, // 197: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:output_type -> akuity.io.kargo.service.v1alpha1.AdminLoginResponse - 15, // 198: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateResourceResponse - 18, // 199: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResponse - 21, // 200: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceResponse - 24, // 201: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:output_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceResponse - 181, // 202: akuity.io.kargo.service.v1alpha1.KargoService.RefreshResource:output_type -> akuity.io.kargo.service.v1alpha1.RefreshResourceResponse - 26, // 203: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:output_type -> akuity.io.kargo.service.v1alpha1.ListStagesResponse - 43, // 204: akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries:output_type -> akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse - 28, // 205: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:output_type -> akuity.io.kargo.service.v1alpha1.ListImagesResponse - 32, // 206: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:output_type -> akuity.io.kargo.service.v1alpha1.GetStageResponse - 34, // 207: akuity.io.kargo.service.v1alpha1.KargoService.GetStageHealthOutputs:output_type -> akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse - 36, // 208: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:output_type -> akuity.io.kargo.service.v1alpha1.WatchStagesResponse - 45, // 209: akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries:output_type -> akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse - 38, // 210: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:output_type -> akuity.io.kargo.service.v1alpha1.DeleteStageResponse - 47, // 211: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse - 49, // 212: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterConfigResponse - 51, // 213: akuity.io.kargo.service.v1alpha1.KargoService.WatchClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse - 53, // 214: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsResponse - 55, // 215: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse - 57, // 216: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionResponse - 59, // 217: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionResponse - 61, // 218: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:output_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionResponse - 63, // 219: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectResponse - 65, // 220: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectResponse - 67, // 221: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectsResponse - 69, // 222: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse - 71, // 223: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectConfigResponse - 73, // 224: akuity.io.kargo.service.v1alpha1.KargoService.WatchProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse - 75, // 225: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:output_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightResponse - 77, // 226: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:output_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightResponse - 79, // 227: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:output_type -> akuity.io.kargo.service.v1alpha1.GetFreightResponse - 81, // 228: akuity.io.kargo.service.v1alpha1.KargoService.WatchFreight:output_type -> akuity.io.kargo.service.v1alpha1.WatchFreightResponse - 83, // 229: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:output_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageResponse - 85, // 230: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:output_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse - 87, // 231: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:output_type -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse - 90, // 232: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:output_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse - 92, // 233: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:output_type -> akuity.io.kargo.service.v1alpha1.ReverifyResponse - 94, // 234: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:output_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationResponse - 96, // 235: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesResponse - 98, // 236: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseResponse - 100, // 237: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse - 102, // 238: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse - 114, // 239: akuity.io.kargo.service.v1alpha1.KargoService.CreateRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse - 116, // 240: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsResponse - 118, // 241: akuity.io.kargo.service.v1alpha1.KargoService.GetRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse - 120, // 242: akuity.io.kargo.service.v1alpha1.KargoService.ListRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse - 122, // 243: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse - 124, // 244: akuity.io.kargo.service.v1alpha1.KargoService.ListGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse - 126, // 245: akuity.io.kargo.service.v1alpha1.KargoService.CreateGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse - 128, // 246: akuity.io.kargo.service.v1alpha1.KargoService.UpdateGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse - 130, // 247: akuity.io.kargo.service.v1alpha1.KargoService.DeleteGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsResponse - 104, // 248: akuity.io.kargo.service.v1alpha1.KargoService.CreateConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse - 106, // 249: akuity.io.kargo.service.v1alpha1.KargoService.DeleteConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.DeleteConfigMapResponse - 108, // 250: akuity.io.kargo.service.v1alpha1.KargoService.ListConfigMaps:output_type -> akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse - 110, // 251: akuity.io.kargo.service.v1alpha1.KargoService.GetConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigMapResponse - 112, // 252: akuity.io.kargo.service.v1alpha1.KargoService.UpdateConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse - 132, // 253: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse - 134, // 254: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse - 136, // 255: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse - 138, // 256: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse - 140, // 257: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse - 142, // 258: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse - 144, // 259: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse - 146, // 260: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse - 148, // 261: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse - 150, // 262: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse - 154, // 263: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse - 152, // 264: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse - 156, // 265: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse - 158, // 266: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:output_type -> akuity.io.kargo.service.v1alpha1.CreateRoleResponse - 160, // 267: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleResponse - 162, // 268: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:output_type -> akuity.io.kargo.service.v1alpha1.GetRoleResponse - 165, // 269: akuity.io.kargo.service.v1alpha1.KargoService.Grant:output_type -> akuity.io.kargo.service.v1alpha1.GrantResponse - 167, // 270: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:output_type -> akuity.io.kargo.service.v1alpha1.ListRolesResponse - 169, // 271: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:output_type -> akuity.io.kargo.service.v1alpha1.RevokeResponse - 171, // 272: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleResponse - 173, // 273: akuity.io.kargo.service.v1alpha1.KargoService.CreateAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse - 175, // 274: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAPITokenResponse - 177, // 275: akuity.io.kargo.service.v1alpha1.KargoService.GetAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.GetAPITokenResponse - 179, // 276: akuity.io.kargo.service.v1alpha1.KargoService.ListAPITokens:output_type -> akuity.io.kargo.service.v1alpha1.ListAPITokensResponse - 194, // [194:277] is the sub-list for method output_type - 111, // [111:194] is the sub-list for method input_type - 111, // [111:111] is the sub-list for extension type_name - 111, // [111:111] is the sub-list for extension extendee - 0, // [0:111] is the sub-list for field type_name + 186, // 15: akuity.io.kargo.service.v1alpha1.GetStageResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage + 179, // 16: akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse.health_outputs:type_name -> akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse.HealthOutputsEntry + 186, // 17: akuity.io.kargo.service.v1alpha1.WatchStagesResponse.stage:type_name -> github.com.akuity.kargo.api.v1alpha1.Stage + 0, // 18: akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 187, // 19: akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig + 187, // 20: akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse.cluster_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterConfig + 188, // 21: akuity.io.kargo.service.v1alpha1.ListPromotionsResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 188, // 22: akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 0, // 23: akuity.io.kargo.service.v1alpha1.GetPromotionRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 188, // 24: akuity.io.kargo.service.v1alpha1.GetPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 188, // 25: akuity.io.kargo.service.v1alpha1.WatchPromotionResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 0, // 26: akuity.io.kargo.service.v1alpha1.GetProjectRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 189, // 27: akuity.io.kargo.service.v1alpha1.GetProjectResponse.project:type_name -> github.com.akuity.kargo.api.v1alpha1.Project + 189, // 28: akuity.io.kargo.service.v1alpha1.ListProjectsResponse.projects:type_name -> github.com.akuity.kargo.api.v1alpha1.Project + 0, // 29: akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 190, // 30: akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig + 190, // 31: akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse.project_config:type_name -> github.com.akuity.kargo.api.v1alpha1.ProjectConfig + 0, // 32: akuity.io.kargo.service.v1alpha1.GetFreightRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 191, // 33: akuity.io.kargo.service.v1alpha1.GetFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight + 191, // 34: akuity.io.kargo.service.v1alpha1.WatchFreightResponse.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight + 188, // 35: akuity.io.kargo.service.v1alpha1.PromoteToStageResponse.promotion:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 188, // 36: akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse.promotions:type_name -> github.com.akuity.kargo.api.v1alpha1.Promotion + 180, // 37: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.groups:type_name -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry + 191, // 38: akuity.io.kargo.service.v1alpha1.FreightList.freight:type_name -> github.com.akuity.kargo.api.v1alpha1.Freight + 192, // 39: akuity.io.kargo.service.v1alpha1.ListWarehousesResponse.warehouses:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse + 0, // 40: akuity.io.kargo.service.v1alpha1.GetWarehouseRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 192, // 41: akuity.io.kargo.service.v1alpha1.GetWarehouseResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse + 192, // 42: akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse.warehouse:type_name -> github.com.akuity.kargo.api.v1alpha1.Warehouse + 181, // 43: akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest.DataEntry + 193, // 44: akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap + 193, // 45: akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse.config_maps:type_name -> k8s.io.api.core.v1.ConfigMap + 0, // 46: akuity.io.kargo.service.v1alpha1.GetConfigMapRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 193, // 47: akuity.io.kargo.service.v1alpha1.GetConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap + 182, // 48: akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest.DataEntry + 193, // 49: akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse.config_map:type_name -> k8s.io.api.core.v1.ConfigMap + 194, // 50: akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 0, // 51: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 194, // 52: akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 194, // 53: akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 194, // 54: akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 194, // 55: akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 183, // 56: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest.DataEntry + 194, // 57: akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 184, // 58: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.data:type_name -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest.DataEntry + 194, // 59: akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse.credentials:type_name -> k8s.io.api.core.v1.Secret + 195, // 60: akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse.analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate + 0, // 61: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 195, // 62: akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse.analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisTemplate + 196, // 63: akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse.cluster_analysis_templates:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate + 0, // 64: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 196, // 65: akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse.cluster_analysis_template:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.ClusterAnalysisTemplate + 0, // 66: akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 197, // 67: akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse.analysis_run:type_name -> github.com.akuity.kargo.api.stubs.rollouts.v1alpha1.AnalysisRun + 198, // 68: akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse.events:type_name -> k8s.io.api.core.v1.Event + 199, // 69: akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse.promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask + 0, // 70: akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 199, // 71: akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.PromotionTask + 200, // 72: akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse.cluster_promotion_tasks:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask + 0, // 73: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 200, // 74: akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse.promotion_task:type_name -> github.com.akuity.kargo.api.v1alpha1.ClusterPromotionTask + 201, // 75: akuity.io.kargo.service.v1alpha1.CreateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 201, // 76: akuity.io.kargo.service.v1alpha1.CreateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 0, // 77: akuity.io.kargo.service.v1alpha1.GetRoleRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 201, // 78: akuity.io.kargo.service.v1alpha1.GetRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 202, // 79: akuity.io.kargo.service.v1alpha1.GetRoleResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources + 203, // 80: akuity.io.kargo.service.v1alpha1.Claims.claims:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Claim + 156, // 81: akuity.io.kargo.service.v1alpha1.GrantRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims + 204, // 82: akuity.io.kargo.service.v1alpha1.GrantRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails + 201, // 83: akuity.io.kargo.service.v1alpha1.GrantResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 201, // 84: akuity.io.kargo.service.v1alpha1.ListRolesResponse.roles:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 202, // 85: akuity.io.kargo.service.v1alpha1.ListRolesResponse.resources:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources + 156, // 86: akuity.io.kargo.service.v1alpha1.RevokeRequest.user_claims:type_name -> akuity.io.kargo.service.v1alpha1.Claims + 204, // 87: akuity.io.kargo.service.v1alpha1.RevokeRequest.resource_details:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.ResourceDetails + 201, // 88: akuity.io.kargo.service.v1alpha1.RevokeResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 201, // 89: akuity.io.kargo.service.v1alpha1.UpdateRoleRequest.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 201, // 90: akuity.io.kargo.service.v1alpha1.UpdateRoleResponse.role:type_name -> github.com.akuity.kargo.api.rbac.v1alpha1.Role + 194, // 91: akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse.token_secret:type_name -> k8s.io.api.core.v1.Secret + 0, // 92: akuity.io.kargo.service.v1alpha1.GetAPITokenRequest.format:type_name -> akuity.io.kargo.service.v1alpha1.RawFormat + 194, // 93: akuity.io.kargo.service.v1alpha1.GetAPITokenResponse.token_secret:type_name -> k8s.io.api.core.v1.Secret + 194, // 94: akuity.io.kargo.service.v1alpha1.ListAPITokensResponse.token_secrets:type_name -> k8s.io.api.core.v1.Secret + 205, // 95: akuity.io.kargo.service.v1alpha1.RefreshResourceResponse.resource:type_name -> google.protobuf.Any + 6, // 96: akuity.io.kargo.service.v1alpha1.GetConfigResponse.ArgocdShardsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ArgoCDShard + 29, // 97: akuity.io.kargo.service.v1alpha1.ListImagesResponse.ImagesEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.TagMap + 30, // 98: akuity.io.kargo.service.v1alpha1.TagMap.TagsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.ImageStageMap + 81, // 99: akuity.io.kargo.service.v1alpha1.QueryFreightResponse.GroupsEntry.value:type_name -> akuity.io.kargo.service.v1alpha1.FreightList + 3, // 100: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:input_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoRequest + 5, // 101: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigRequest + 8, // 102: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigRequest + 11, // 103: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:input_type -> akuity.io.kargo.service.v1alpha1.AdminLoginRequest + 13, // 104: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateResourceRequest + 16, // 105: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceRequest + 19, // 106: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:input_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceRequest + 22, // 107: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:input_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceRequest + 173, // 108: akuity.io.kargo.service.v1alpha1.KargoService.RefreshResource:input_type -> akuity.io.kargo.service.v1alpha1.RefreshResourceRequest + 25, // 109: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:input_type -> akuity.io.kargo.service.v1alpha1.ListStagesRequest + 27, // 110: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:input_type -> akuity.io.kargo.service.v1alpha1.ListImagesRequest + 31, // 111: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:input_type -> akuity.io.kargo.service.v1alpha1.GetStageRequest + 33, // 112: akuity.io.kargo.service.v1alpha1.KargoService.GetStageHealthOutputs:input_type -> akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsRequest + 35, // 113: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:input_type -> akuity.io.kargo.service.v1alpha1.WatchStagesRequest + 37, // 114: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:input_type -> akuity.io.kargo.service.v1alpha1.DeleteStageRequest + 39, // 115: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest + 41, // 116: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterConfigRequest + 43, // 117: akuity.io.kargo.service.v1alpha1.KargoService.WatchClusterConfig:input_type -> akuity.io.kargo.service.v1alpha1.WatchClusterConfigRequest + 45, // 118: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsRequest + 47, // 119: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsRequest + 49, // 120: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionRequest + 51, // 121: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:input_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionRequest + 53, // 122: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:input_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionRequest + 55, // 123: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectRequest + 57, // 124: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectRequest + 59, // 125: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectsRequest + 61, // 126: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigRequest + 63, // 127: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectConfigRequest + 65, // 128: akuity.io.kargo.service.v1alpha1.KargoService.WatchProjectConfig:input_type -> akuity.io.kargo.service.v1alpha1.WatchProjectConfigRequest + 67, // 129: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:input_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightRequest + 69, // 130: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:input_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightRequest + 71, // 131: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:input_type -> akuity.io.kargo.service.v1alpha1.GetFreightRequest + 73, // 132: akuity.io.kargo.service.v1alpha1.KargoService.WatchFreight:input_type -> akuity.io.kargo.service.v1alpha1.WatchFreightRequest + 75, // 133: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:input_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageRequest + 77, // 134: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:input_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamRequest + 79, // 135: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:input_type -> akuity.io.kargo.service.v1alpha1.QueryFreightRequest + 82, // 136: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:input_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasRequest + 84, // 137: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:input_type -> akuity.io.kargo.service.v1alpha1.ReverifyRequest + 86, // 138: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:input_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationRequest + 88, // 139: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesRequest + 90, // 140: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseRequest + 92, // 141: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:input_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesRequest + 94, // 142: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:input_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseRequest + 106, // 143: akuity.io.kargo.service.v1alpha1.KargoService.CreateRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsRequest + 108, // 144: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsRequest + 110, // 145: akuity.io.kargo.service.v1alpha1.KargoService.GetRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.GetRepoCredentialsRequest + 112, // 146: akuity.io.kargo.service.v1alpha1.KargoService.ListRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListRepoCredentialsRequest + 114, // 147: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRepoCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsRequest + 116, // 148: akuity.io.kargo.service.v1alpha1.KargoService.ListGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.ListGenericCredentialsRequest + 118, // 149: akuity.io.kargo.service.v1alpha1.KargoService.CreateGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsRequest + 120, // 150: akuity.io.kargo.service.v1alpha1.KargoService.UpdateGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsRequest + 122, // 151: akuity.io.kargo.service.v1alpha1.KargoService.DeleteGenericCredentials:input_type -> akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsRequest + 96, // 152: akuity.io.kargo.service.v1alpha1.KargoService.CreateConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.CreateConfigMapRequest + 98, // 153: akuity.io.kargo.service.v1alpha1.KargoService.DeleteConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.DeleteConfigMapRequest + 100, // 154: akuity.io.kargo.service.v1alpha1.KargoService.ListConfigMaps:input_type -> akuity.io.kargo.service.v1alpha1.ListConfigMapsRequest + 102, // 155: akuity.io.kargo.service.v1alpha1.KargoService.GetConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.GetConfigMapRequest + 104, // 156: akuity.io.kargo.service.v1alpha1.KargoService.UpdateConfigMap:input_type -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapRequest + 124, // 157: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesRequest + 126, // 158: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateRequest + 128, // 159: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateRequest + 130, // 160: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesRequest + 132, // 161: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateRequest + 134, // 162: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:input_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateRequest + 136, // 163: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunRequest + 138, // 164: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:input_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsRequest + 140, // 165: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:input_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsRequest + 142, // 166: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksRequest + 146, // 167: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:input_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksRequest + 144, // 168: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskRequest + 148, // 169: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:input_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskRequest + 150, // 170: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:input_type -> akuity.io.kargo.service.v1alpha1.CreateRoleRequest + 152, // 171: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:input_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleRequest + 154, // 172: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:input_type -> akuity.io.kargo.service.v1alpha1.GetRoleRequest + 157, // 173: akuity.io.kargo.service.v1alpha1.KargoService.Grant:input_type -> akuity.io.kargo.service.v1alpha1.GrantRequest + 159, // 174: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:input_type -> akuity.io.kargo.service.v1alpha1.ListRolesRequest + 161, // 175: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:input_type -> akuity.io.kargo.service.v1alpha1.RevokeRequest + 163, // 176: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:input_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleRequest + 165, // 177: akuity.io.kargo.service.v1alpha1.KargoService.CreateAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.CreateAPITokenRequest + 167, // 178: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.DeleteAPITokenRequest + 169, // 179: akuity.io.kargo.service.v1alpha1.KargoService.GetAPIToken:input_type -> akuity.io.kargo.service.v1alpha1.GetAPITokenRequest + 171, // 180: akuity.io.kargo.service.v1alpha1.KargoService.ListAPITokens:input_type -> akuity.io.kargo.service.v1alpha1.ListAPITokensRequest + 4, // 181: akuity.io.kargo.service.v1alpha1.KargoService.GetVersionInfo:output_type -> akuity.io.kargo.service.v1alpha1.GetVersionInfoResponse + 7, // 182: akuity.io.kargo.service.v1alpha1.KargoService.GetConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigResponse + 9, // 183: akuity.io.kargo.service.v1alpha1.KargoService.GetPublicConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetPublicConfigResponse + 12, // 184: akuity.io.kargo.service.v1alpha1.KargoService.AdminLogin:output_type -> akuity.io.kargo.service.v1alpha1.AdminLoginResponse + 15, // 185: akuity.io.kargo.service.v1alpha1.KargoService.CreateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateResourceResponse + 18, // 186: akuity.io.kargo.service.v1alpha1.KargoService.CreateOrUpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.CreateOrUpdateResourceResponse + 21, // 187: akuity.io.kargo.service.v1alpha1.KargoService.UpdateResource:output_type -> akuity.io.kargo.service.v1alpha1.UpdateResourceResponse + 24, // 188: akuity.io.kargo.service.v1alpha1.KargoService.DeleteResource:output_type -> akuity.io.kargo.service.v1alpha1.DeleteResourceResponse + 174, // 189: akuity.io.kargo.service.v1alpha1.KargoService.RefreshResource:output_type -> akuity.io.kargo.service.v1alpha1.RefreshResourceResponse + 26, // 190: akuity.io.kargo.service.v1alpha1.KargoService.ListStages:output_type -> akuity.io.kargo.service.v1alpha1.ListStagesResponse + 28, // 191: akuity.io.kargo.service.v1alpha1.KargoService.ListImages:output_type -> akuity.io.kargo.service.v1alpha1.ListImagesResponse + 32, // 192: akuity.io.kargo.service.v1alpha1.KargoService.GetStage:output_type -> akuity.io.kargo.service.v1alpha1.GetStageResponse + 34, // 193: akuity.io.kargo.service.v1alpha1.KargoService.GetStageHealthOutputs:output_type -> akuity.io.kargo.service.v1alpha1.GetStageHealthOutputsResponse + 36, // 194: akuity.io.kargo.service.v1alpha1.KargoService.WatchStages:output_type -> akuity.io.kargo.service.v1alpha1.WatchStagesResponse + 38, // 195: akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage:output_type -> akuity.io.kargo.service.v1alpha1.DeleteStageResponse + 40, // 196: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse + 42, // 197: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterConfigResponse + 44, // 198: akuity.io.kargo.service.v1alpha1.KargoService.WatchClusterConfig:output_type -> akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse + 46, // 199: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotions:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionsResponse + 48, // 200: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotions:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionsResponse + 50, // 201: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotion:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionResponse + 52, // 202: akuity.io.kargo.service.v1alpha1.KargoService.WatchPromotion:output_type -> akuity.io.kargo.service.v1alpha1.WatchPromotionResponse + 54, // 203: akuity.io.kargo.service.v1alpha1.KargoService.AbortPromotion:output_type -> akuity.io.kargo.service.v1alpha1.AbortPromotionResponse + 56, // 204: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProject:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectResponse + 58, // 205: akuity.io.kargo.service.v1alpha1.KargoService.GetProject:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectResponse + 60, // 206: akuity.io.kargo.service.v1alpha1.KargoService.ListProjects:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectsResponse + 62, // 207: akuity.io.kargo.service.v1alpha1.KargoService.GetProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.GetProjectConfigResponse + 64, // 208: akuity.io.kargo.service.v1alpha1.KargoService.DeleteProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.DeleteProjectConfigResponse + 66, // 209: akuity.io.kargo.service.v1alpha1.KargoService.WatchProjectConfig:output_type -> akuity.io.kargo.service.v1alpha1.WatchProjectConfigResponse + 68, // 210: akuity.io.kargo.service.v1alpha1.KargoService.ApproveFreight:output_type -> akuity.io.kargo.service.v1alpha1.ApproveFreightResponse + 70, // 211: akuity.io.kargo.service.v1alpha1.KargoService.DeleteFreight:output_type -> akuity.io.kargo.service.v1alpha1.DeleteFreightResponse + 72, // 212: akuity.io.kargo.service.v1alpha1.KargoService.GetFreight:output_type -> akuity.io.kargo.service.v1alpha1.GetFreightResponse + 74, // 213: akuity.io.kargo.service.v1alpha1.KargoService.WatchFreight:output_type -> akuity.io.kargo.service.v1alpha1.WatchFreightResponse + 76, // 214: akuity.io.kargo.service.v1alpha1.KargoService.PromoteToStage:output_type -> akuity.io.kargo.service.v1alpha1.PromoteToStageResponse + 78, // 215: akuity.io.kargo.service.v1alpha1.KargoService.PromoteDownstream:output_type -> akuity.io.kargo.service.v1alpha1.PromoteDownstreamResponse + 80, // 216: akuity.io.kargo.service.v1alpha1.KargoService.QueryFreight:output_type -> akuity.io.kargo.service.v1alpha1.QueryFreightResponse + 83, // 217: akuity.io.kargo.service.v1alpha1.KargoService.UpdateFreightAlias:output_type -> akuity.io.kargo.service.v1alpha1.UpdateFreightAliasResponse + 85, // 218: akuity.io.kargo.service.v1alpha1.KargoService.Reverify:output_type -> akuity.io.kargo.service.v1alpha1.ReverifyResponse + 87, // 219: akuity.io.kargo.service.v1alpha1.KargoService.AbortVerification:output_type -> akuity.io.kargo.service.v1alpha1.AbortVerificationResponse + 89, // 220: akuity.io.kargo.service.v1alpha1.KargoService.ListWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.ListWarehousesResponse + 91, // 221: akuity.io.kargo.service.v1alpha1.KargoService.GetWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.GetWarehouseResponse + 93, // 222: akuity.io.kargo.service.v1alpha1.KargoService.WatchWarehouses:output_type -> akuity.io.kargo.service.v1alpha1.WatchWarehousesResponse + 95, // 223: akuity.io.kargo.service.v1alpha1.KargoService.DeleteWarehouse:output_type -> akuity.io.kargo.service.v1alpha1.DeleteWarehouseResponse + 107, // 224: akuity.io.kargo.service.v1alpha1.KargoService.CreateRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateRepoCredentialsResponse + 109, // 225: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRepoCredentialsResponse + 111, // 226: akuity.io.kargo.service.v1alpha1.KargoService.GetRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.GetRepoCredentialsResponse + 113, // 227: akuity.io.kargo.service.v1alpha1.KargoService.ListRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListRepoCredentialsResponse + 115, // 228: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRepoCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRepoCredentialsResponse + 117, // 229: akuity.io.kargo.service.v1alpha1.KargoService.ListGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.ListGenericCredentialsResponse + 119, // 230: akuity.io.kargo.service.v1alpha1.KargoService.CreateGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.CreateGenericCredentialsResponse + 121, // 231: akuity.io.kargo.service.v1alpha1.KargoService.UpdateGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.UpdateGenericCredentialsResponse + 123, // 232: akuity.io.kargo.service.v1alpha1.KargoService.DeleteGenericCredentials:output_type -> akuity.io.kargo.service.v1alpha1.DeleteGenericCredentialsResponse + 97, // 233: akuity.io.kargo.service.v1alpha1.KargoService.CreateConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.CreateConfigMapResponse + 99, // 234: akuity.io.kargo.service.v1alpha1.KargoService.DeleteConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.DeleteConfigMapResponse + 101, // 235: akuity.io.kargo.service.v1alpha1.KargoService.ListConfigMaps:output_type -> akuity.io.kargo.service.v1alpha1.ListConfigMapsResponse + 103, // 236: akuity.io.kargo.service.v1alpha1.KargoService.GetConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.GetConfigMapResponse + 105, // 237: akuity.io.kargo.service.v1alpha1.KargoService.UpdateConfigMap:output_type -> akuity.io.kargo.service.v1alpha1.UpdateConfigMapResponse + 125, // 238: akuity.io.kargo.service.v1alpha1.KargoService.ListAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListAnalysisTemplatesResponse + 127, // 239: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisTemplateResponse + 129, // 240: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAnalysisTemplateResponse + 131, // 241: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterAnalysisTemplates:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterAnalysisTemplatesResponse + 133, // 242: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterAnalysisTemplateResponse + 135, // 243: akuity.io.kargo.service.v1alpha1.KargoService.DeleteClusterAnalysisTemplate:output_type -> akuity.io.kargo.service.v1alpha1.DeleteClusterAnalysisTemplateResponse + 137, // 244: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRun:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunResponse + 139, // 245: akuity.io.kargo.service.v1alpha1.KargoService.GetAnalysisRunLogs:output_type -> akuity.io.kargo.service.v1alpha1.GetAnalysisRunLogsResponse + 141, // 246: akuity.io.kargo.service.v1alpha1.KargoService.ListProjectEvents:output_type -> akuity.io.kargo.service.v1alpha1.ListProjectEventsResponse + 143, // 247: akuity.io.kargo.service.v1alpha1.KargoService.ListPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListPromotionTasksResponse + 147, // 248: akuity.io.kargo.service.v1alpha1.KargoService.ListClusterPromotionTasks:output_type -> akuity.io.kargo.service.v1alpha1.ListClusterPromotionTasksResponse + 145, // 249: akuity.io.kargo.service.v1alpha1.KargoService.GetPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetPromotionTaskResponse + 149, // 250: akuity.io.kargo.service.v1alpha1.KargoService.GetClusterPromotionTask:output_type -> akuity.io.kargo.service.v1alpha1.GetClusterPromotionTaskResponse + 151, // 251: akuity.io.kargo.service.v1alpha1.KargoService.CreateRole:output_type -> akuity.io.kargo.service.v1alpha1.CreateRoleResponse + 153, // 252: akuity.io.kargo.service.v1alpha1.KargoService.DeleteRole:output_type -> akuity.io.kargo.service.v1alpha1.DeleteRoleResponse + 155, // 253: akuity.io.kargo.service.v1alpha1.KargoService.GetRole:output_type -> akuity.io.kargo.service.v1alpha1.GetRoleResponse + 158, // 254: akuity.io.kargo.service.v1alpha1.KargoService.Grant:output_type -> akuity.io.kargo.service.v1alpha1.GrantResponse + 160, // 255: akuity.io.kargo.service.v1alpha1.KargoService.ListRoles:output_type -> akuity.io.kargo.service.v1alpha1.ListRolesResponse + 162, // 256: akuity.io.kargo.service.v1alpha1.KargoService.Revoke:output_type -> akuity.io.kargo.service.v1alpha1.RevokeResponse + 164, // 257: akuity.io.kargo.service.v1alpha1.KargoService.UpdateRole:output_type -> akuity.io.kargo.service.v1alpha1.UpdateRoleResponse + 166, // 258: akuity.io.kargo.service.v1alpha1.KargoService.CreateAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.CreateAPITokenResponse + 168, // 259: akuity.io.kargo.service.v1alpha1.KargoService.DeleteAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.DeleteAPITokenResponse + 170, // 260: akuity.io.kargo.service.v1alpha1.KargoService.GetAPIToken:output_type -> akuity.io.kargo.service.v1alpha1.GetAPITokenResponse + 172, // 261: akuity.io.kargo.service.v1alpha1.KargoService.ListAPITokens:output_type -> akuity.io.kargo.service.v1alpha1.ListAPITokensResponse + 181, // [181:262] is the sub-list for method output_type + 100, // [100:181] is the sub-list for method input_type + 100, // [100:100] is the sub-list for extension type_name + 100, // [100:100] is the sub-list for extension extendee + 0, // [0:100] is the sub-list for field type_name } func init() { file_api_service_v1alpha1_service_proto_init() } @@ -14274,90 +13648,6 @@ func file_api_service_v1alpha1_service_proto_init() { } } file_api_service_v1alpha1_service_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StageSummary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_service_v1alpha1_service_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StageSpecSummary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_service_v1alpha1_service_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StageStatusSummary); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_service_v1alpha1_service_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListStageSummariesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_service_v1alpha1_service_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListStageSummariesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_service_v1alpha1_service_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchStageSummariesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_service_v1alpha1_service_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WatchStageSummariesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_service_v1alpha1_service_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterConfigRequest); i { case 0: return &v.state @@ -14369,7 +13659,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterConfigResponse); i { case 0: return &v.state @@ -14381,7 +13671,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteClusterConfigRequest); i { case 0: return &v.state @@ -14393,7 +13683,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteClusterConfigResponse); i { case 0: return &v.state @@ -14405,7 +13695,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchClusterConfigRequest); i { case 0: return &v.state @@ -14417,7 +13707,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchClusterConfigResponse); i { case 0: return &v.state @@ -14429,7 +13719,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPromotionsRequest); i { case 0: return &v.state @@ -14441,7 +13731,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPromotionsResponse); i { case 0: return &v.state @@ -14453,7 +13743,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchPromotionsRequest); i { case 0: return &v.state @@ -14465,7 +13755,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchPromotionsResponse); i { case 0: return &v.state @@ -14477,7 +13767,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPromotionRequest); i { case 0: return &v.state @@ -14489,7 +13779,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPromotionResponse); i { case 0: return &v.state @@ -14501,7 +13791,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchPromotionRequest); i { case 0: return &v.state @@ -14513,7 +13803,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchPromotionResponse); i { case 0: return &v.state @@ -14525,7 +13815,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbortPromotionRequest); i { case 0: return &v.state @@ -14537,7 +13827,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbortPromotionResponse); i { case 0: return &v.state @@ -14549,7 +13839,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectRequest); i { case 0: return &v.state @@ -14561,7 +13851,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectResponse); i { case 0: return &v.state @@ -14573,7 +13863,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectRequest); i { case 0: return &v.state @@ -14585,7 +13875,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectResponse); i { case 0: return &v.state @@ -14597,7 +13887,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectsRequest); i { case 0: return &v.state @@ -14609,7 +13899,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectsResponse); i { case 0: return &v.state @@ -14621,7 +13911,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectConfigRequest); i { case 0: return &v.state @@ -14633,7 +13923,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProjectConfigResponse); i { case 0: return &v.state @@ -14645,7 +13935,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectConfigRequest); i { case 0: return &v.state @@ -14657,7 +13947,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteProjectConfigResponse); i { case 0: return &v.state @@ -14669,7 +13959,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchProjectConfigRequest); i { case 0: return &v.state @@ -14681,7 +13971,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchProjectConfigResponse); i { case 0: return &v.state @@ -14693,7 +13983,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ApproveFreightRequest); i { case 0: return &v.state @@ -14705,7 +13995,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ApproveFreightResponse); i { case 0: return &v.state @@ -14717,7 +14007,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFreightRequest); i { case 0: return &v.state @@ -14729,7 +14019,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFreightResponse); i { case 0: return &v.state @@ -14741,7 +14031,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFreightRequest); i { case 0: return &v.state @@ -14753,7 +14043,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFreightResponse); i { case 0: return &v.state @@ -14765,7 +14055,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchFreightRequest); i { case 0: return &v.state @@ -14777,7 +14067,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchFreightResponse); i { case 0: return &v.state @@ -14789,7 +14079,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PromoteToStageRequest); i { case 0: return &v.state @@ -14801,7 +14091,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PromoteToStageResponse); i { case 0: return &v.state @@ -14813,7 +14103,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PromoteDownstreamRequest); i { case 0: return &v.state @@ -14825,7 +14115,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PromoteDownstreamResponse); i { case 0: return &v.state @@ -14837,7 +14127,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryFreightRequest); i { case 0: return &v.state @@ -14849,7 +14139,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryFreightResponse); i { case 0: return &v.state @@ -14861,7 +14151,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FreightList); i { case 0: return &v.state @@ -14873,7 +14163,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateFreightAliasRequest); i { case 0: return &v.state @@ -14885,7 +14175,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateFreightAliasResponse); i { case 0: return &v.state @@ -14897,7 +14187,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReverifyRequest); i { case 0: return &v.state @@ -14909,7 +14199,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReverifyResponse); i { case 0: return &v.state @@ -14921,7 +14211,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbortVerificationRequest); i { case 0: return &v.state @@ -14933,7 +14223,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AbortVerificationResponse); i { case 0: return &v.state @@ -14945,7 +14235,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWarehousesRequest); i { case 0: return &v.state @@ -14957,7 +14247,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWarehousesResponse); i { case 0: return &v.state @@ -14969,7 +14259,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWarehouseRequest); i { case 0: return &v.state @@ -14981,7 +14271,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWarehouseResponse); i { case 0: return &v.state @@ -14993,7 +14283,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchWarehousesRequest); i { case 0: return &v.state @@ -15005,7 +14295,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WatchWarehousesResponse); i { case 0: return &v.state @@ -15017,7 +14307,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteWarehouseRequest); i { case 0: return &v.state @@ -15029,7 +14319,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteWarehouseResponse); i { case 0: return &v.state @@ -15041,7 +14331,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateConfigMapRequest); i { case 0: return &v.state @@ -15053,7 +14343,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateConfigMapResponse); i { case 0: return &v.state @@ -15065,7 +14355,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteConfigMapRequest); i { case 0: return &v.state @@ -15077,7 +14367,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteConfigMapResponse); i { case 0: return &v.state @@ -15089,7 +14379,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListConfigMapsRequest); i { case 0: return &v.state @@ -15101,7 +14391,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListConfigMapsResponse); i { case 0: return &v.state @@ -15113,7 +14403,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetConfigMapRequest); i { case 0: return &v.state @@ -15125,7 +14415,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetConfigMapResponse); i { case 0: return &v.state @@ -15137,7 +14427,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateConfigMapRequest); i { case 0: return &v.state @@ -15149,7 +14439,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateConfigMapResponse); i { case 0: return &v.state @@ -15161,7 +14451,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRepoCredentialsRequest); i { case 0: return &v.state @@ -15173,7 +14463,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRepoCredentialsResponse); i { case 0: return &v.state @@ -15185,7 +14475,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRepoCredentialsRequest); i { case 0: return &v.state @@ -15197,7 +14487,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRepoCredentialsResponse); i { case 0: return &v.state @@ -15209,7 +14499,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRepoCredentialsRequest); i { case 0: return &v.state @@ -15221,7 +14511,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRepoCredentialsResponse); i { case 0: return &v.state @@ -15233,7 +14523,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRepoCredentialsRequest); i { case 0: return &v.state @@ -15245,7 +14535,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRepoCredentialsResponse); i { case 0: return &v.state @@ -15257,7 +14547,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRepoCredentialsRequest); i { case 0: return &v.state @@ -15269,7 +14559,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRepoCredentialsResponse); i { case 0: return &v.state @@ -15281,7 +14571,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGenericCredentialsRequest); i { case 0: return &v.state @@ -15293,7 +14583,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGenericCredentialsResponse); i { case 0: return &v.state @@ -15305,7 +14595,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateGenericCredentialsRequest); i { case 0: return &v.state @@ -15317,7 +14607,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateGenericCredentialsResponse); i { case 0: return &v.state @@ -15329,7 +14619,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGenericCredentialsRequest); i { case 0: return &v.state @@ -15341,7 +14631,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGenericCredentialsResponse); i { case 0: return &v.state @@ -15353,7 +14643,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteGenericCredentialsRequest); i { case 0: return &v.state @@ -15365,7 +14655,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteGenericCredentialsResponse); i { case 0: return &v.state @@ -15377,7 +14667,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAnalysisTemplatesRequest); i { case 0: return &v.state @@ -15389,7 +14679,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAnalysisTemplatesResponse); i { case 0: return &v.state @@ -15401,7 +14691,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisTemplateRequest); i { case 0: return &v.state @@ -15413,7 +14703,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisTemplateResponse); i { case 0: return &v.state @@ -15425,7 +14715,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAnalysisTemplateRequest); i { case 0: return &v.state @@ -15437,7 +14727,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAnalysisTemplateResponse); i { case 0: return &v.state @@ -15449,7 +14739,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClusterAnalysisTemplatesRequest); i { case 0: return &v.state @@ -15461,7 +14751,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClusterAnalysisTemplatesResponse); i { case 0: return &v.state @@ -15473,7 +14763,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAnalysisTemplateRequest); i { case 0: return &v.state @@ -15485,7 +14775,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterAnalysisTemplateResponse); i { case 0: return &v.state @@ -15497,7 +14787,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteClusterAnalysisTemplateRequest); i { case 0: return &v.state @@ -15509,7 +14799,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteClusterAnalysisTemplateResponse); i { case 0: return &v.state @@ -15521,7 +14811,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisRunRequest); i { case 0: return &v.state @@ -15533,7 +14823,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisRunResponse); i { case 0: return &v.state @@ -15545,7 +14835,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisRunLogsRequest); i { case 0: return &v.state @@ -15557,7 +14847,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAnalysisRunLogsResponse); i { case 0: return &v.state @@ -15569,7 +14859,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectEventsRequest); i { case 0: return &v.state @@ -15581,7 +14871,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProjectEventsResponse); i { case 0: return &v.state @@ -15593,7 +14883,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPromotionTasksRequest); i { case 0: return &v.state @@ -15605,7 +14895,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPromotionTasksResponse); i { case 0: return &v.state @@ -15617,7 +14907,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPromotionTaskRequest); i { case 0: return &v.state @@ -15629,7 +14919,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPromotionTaskResponse); i { case 0: return &v.state @@ -15641,7 +14931,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClusterPromotionTasksRequest); i { case 0: return &v.state @@ -15653,7 +14943,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClusterPromotionTasksResponse); i { case 0: return &v.state @@ -15665,7 +14955,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterPromotionTaskRequest); i { case 0: return &v.state @@ -15677,7 +14967,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterPromotionTaskResponse); i { case 0: return &v.state @@ -15689,7 +14979,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRoleRequest); i { case 0: return &v.state @@ -15701,7 +14991,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRoleResponse); i { case 0: return &v.state @@ -15713,7 +15003,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRoleRequest); i { case 0: return &v.state @@ -15725,7 +15015,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRoleResponse); i { case 0: return &v.state @@ -15737,7 +15027,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRoleRequest); i { case 0: return &v.state @@ -15749,7 +15039,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRoleResponse); i { case 0: return &v.state @@ -15761,7 +15051,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Claims); i { case 0: return &v.state @@ -15773,7 +15063,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GrantRequest); i { case 0: return &v.state @@ -15785,7 +15075,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GrantResponse); i { case 0: return &v.state @@ -15797,7 +15087,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRolesRequest); i { case 0: return &v.state @@ -15809,7 +15099,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRolesResponse); i { case 0: return &v.state @@ -15821,7 +15111,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokeRequest); i { case 0: return &v.state @@ -15833,7 +15123,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokeResponse); i { case 0: return &v.state @@ -15845,7 +15135,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRoleRequest); i { case 0: return &v.state @@ -15857,7 +15147,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateRoleResponse); i { case 0: return &v.state @@ -15869,7 +15159,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAPITokenRequest); i { case 0: return &v.state @@ -15881,7 +15171,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAPITokenResponse); i { case 0: return &v.state @@ -15893,7 +15183,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAPITokenRequest); i { case 0: return &v.state @@ -15905,7 +15195,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteAPITokenResponse); i { case 0: return &v.state @@ -15917,7 +15207,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAPITokenRequest); i { case 0: return &v.state @@ -15929,7 +15219,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAPITokenResponse); i { case 0: return &v.state @@ -15941,7 +15231,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAPITokensRequest); i { case 0: return &v.state @@ -15953,7 +15243,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAPITokensResponse); i { case 0: return &v.state @@ -15965,7 +15255,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RefreshResourceRequest); i { case 0: return &v.state @@ -15977,7 +15267,7 @@ func file_api_service_v1alpha1_service_proto_init() { return nil } } - file_api_service_v1alpha1_service_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { + file_api_service_v1alpha1_service_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RefreshResourceResponse); i { case 0: return &v.state @@ -16012,78 +15302,75 @@ func file_api_service_v1alpha1_service_proto_init() { (*GetStageResponse_Stage)(nil), (*GetStageResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[38].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[40].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[44].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[46].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[39].OneofWrappers = []interface{}{ (*GetClusterConfigResponse_ClusterConfig)(nil), (*GetClusterConfigResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[51].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[53].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[56].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[44].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[46].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[49].OneofWrappers = []interface{}{ (*GetPromotionResponse_Promotion)(nil), (*GetPromotionResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[64].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[57].OneofWrappers = []interface{}{ (*GetProjectResponse_Project)(nil), (*GetProjectResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[65].OneofWrappers = []interface{}{} - file_api_service_v1alpha1_service_proto_msgTypes[68].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[58].OneofWrappers = []interface{}{} + file_api_service_v1alpha1_service_proto_msgTypes[61].OneofWrappers = []interface{}{ (*GetProjectConfigResponse_ProjectConfig)(nil), (*GetProjectConfigResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[78].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[71].OneofWrappers = []interface{}{ (*GetFreightResponse_Freight)(nil), (*GetFreightResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[97].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[90].OneofWrappers = []interface{}{ (*GetWarehouseResponse_Warehouse)(nil), (*GetWarehouseResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[109].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[102].OneofWrappers = []interface{}{ (*GetConfigMapResponse_ConfigMap)(nil), (*GetConfigMapResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[117].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[110].OneofWrappers = []interface{}{ (*GetRepoCredentialsResponse_Credentials)(nil), (*GetRepoCredentialsResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[133].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[126].OneofWrappers = []interface{}{ (*GetAnalysisTemplateResponse_AnalysisTemplate)(nil), (*GetAnalysisTemplateResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[139].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[132].OneofWrappers = []interface{}{ (*GetClusterAnalysisTemplateResponse_ClusterAnalysisTemplate)(nil), (*GetClusterAnalysisTemplateResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[143].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[136].OneofWrappers = []interface{}{ (*GetAnalysisRunResponse_AnalysisRun)(nil), (*GetAnalysisRunResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[151].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[144].OneofWrappers = []interface{}{ (*GetPromotionTaskResponse_PromotionTask)(nil), (*GetPromotionTaskResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[155].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[148].OneofWrappers = []interface{}{ (*GetClusterPromotionTaskResponse_PromotionTask)(nil), (*GetClusterPromotionTaskResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[161].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[154].OneofWrappers = []interface{}{ (*GetRoleResponse_Role)(nil), (*GetRoleResponse_Resources)(nil), (*GetRoleResponse_Raw)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[163].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[156].OneofWrappers = []interface{}{ (*GrantRequest_UserClaims)(nil), (*GrantRequest_ResourceDetails)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[167].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[160].OneofWrappers = []interface{}{ (*RevokeRequest_UserClaims)(nil), (*RevokeRequest_ResourceDetails)(nil), } - file_api_service_v1alpha1_service_proto_msgTypes[176].OneofWrappers = []interface{}{ + file_api_service_v1alpha1_service_proto_msgTypes[169].OneofWrappers = []interface{}{ (*GetAPITokenResponse_TokenSecret)(nil), (*GetAPITokenResponse_Raw)(nil), } @@ -16093,7 +15380,7 @@ func file_api_service_v1alpha1_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_service_v1alpha1_service_proto_rawDesc, NumEnums: 1, - NumMessages: 191, + NumMessages: 184, NumExtensions: 0, NumServices: 1, }, diff --git a/api/service/v1alpha1/service.proto b/api/service/v1alpha1/service.proto index 6a337ee748..addb615549 100644 --- a/api/service/v1alpha1/service.proto +++ b/api/service/v1alpha1/service.proto @@ -51,29 +51,24 @@ service KargoService { rpc RefreshResource(RefreshResourceRequest) returns (RefreshResourceResponse); /* Stage APIs */ - // ListStages retrieves all stages within a project. + // ListStages retrieves all stages within a project. Pass summary=true to + // receive a lightweight projection intended for list and graph views + // (heavy fields are stripped from each returned Stage; see the summary + // field on ListStagesRequest for details). rpc ListStages(ListStagesRequest) returns (ListStagesResponse); - // ListStageSummaries retrieves a lightweight projection of Stages within a - // project, containing only the fields typically required to render list - // and graph views. Use GetStage to retrieve the full Stage resource when - // detail-level fields are needed. - rpc ListStageSummaries(ListStageSummariesRequest) returns (ListStageSummariesResponse); // ListImages returns available images and their usage across stages. rpc ListImages(ListImagesRequest) returns (ListImagesResponse); // GetStage retrieves details of a specific stage. rpc GetStage(GetStageRequest) returns (GetStageResponse); // GetStageHealthOutputs returns the raw health output blob for the // specified Stages in a project. Intended for clients that use - // ListStageSummaries for the list and need to resolve per-argocd-app + // ListStages with summary=true and need to resolve per-argocd-app // health only for the Stages currently in viewport. Stages that do not // exist or have no health output recorded are omitted from the response. rpc GetStageHealthOutputs(GetStageHealthOutputsRequest) returns (GetStageHealthOutputsResponse); // WatchStages provides a streaming interface to monitor stage changes. + // Pass summary=true to apply the same projection as ListStages. rpc WatchStages(WatchStagesRequest) returns (stream WatchStagesResponse); - // WatchStageSummaries provides a streaming interface to monitor stage - // changes, returning the same lightweight projection as - // ListStageSummaries for each event. - rpc WatchStageSummaries(WatchStageSummariesRequest) returns (stream WatchStageSummariesResponse); // DeleteStage removes a stage from the system. rpc DeleteStage(DeleteStageRequest) returns (DeleteStageResponse); @@ -473,12 +468,31 @@ message ListStagesRequest { // When specified, only Stages that subscribe to at least one of the named // Warehouses are returned. repeated string freight_origins = 2 [json_name = "freightOrigins"]; + // summary, when true, strips heavy fields from each Stage in the response. + // Intended for list and graph views that render many Stages but do not + // need full FreightHistory, PromotionTemplate step configuration, or the + // raw health output blob. Stripped Stages still carry: metadata, shard, + // requestedFreight, promotionTemplate step skeletons (kind/as/name but + // not config), verification, conditions, currentFreight (history[0]), + // currentPromotion, lastPromotion, health metadata (without output.raw), + // observedGeneration, autoPromotionEnabled. Use summary=false (default) + // to retrieve the full Stage, or GetStage for a single Stage in detail. + bool summary = 3; } // ListStagesResponse contains a list of stages within a project. message ListStagesResponse { - // stages is the list of Stage resources found in the project. + // stages is the list of Stage resources found in the project. When the + // corresponding request set summary=true, each Stage has heavy fields + // stripped: status.freightHistory is truncated to index 0, + // spec.promotionTemplate.spec.steps[*].config is cleared, and + // status.health.output is nil. repeated github.com.akuity.kargo.api.v1alpha1.Stage stages = 1; + // resource_version is the Kubernetes ResourceVersion of the underlying + // StageList. Clients may pass this value to WatchStages to begin watching + // from the exact point this list was taken, receiving only subsequent + // changes without redundant initial events. + string resource_version = 2; } // ListImagesRequest is the request for listing images and their usage across stages. @@ -553,6 +567,15 @@ message WatchStagesRequest { // When specified, only events for Stages that subscribe to at least one of // the named Warehouses are streamed. repeated string freight_origins = 3 [json_name = "freightOrigins"]; + // summary, when true, applies the same projection as + // ListStagesRequest.summary to each streamed Stage. See the summary + // field on ListStagesRequest for the list of fields stripped. + bool summary = 4; + // resource_version is an optional Kubernetes ResourceVersion. When set, + // the watch begins at the specified version, allowing clients to resume + // from a prior list (see ListStagesResponse.resource_version) or watch + // without missing or duplicating events. + string resource_version = 5; } // WatchStagesResponse contains stage change notifications. @@ -576,109 +599,6 @@ message DeleteStageResponse { /* explicitly empty */ } -// StageSummary is a lightweight projection of a Stage resource intended for -// use by clients rendering list or graph views of many stages. It omits -// heavy fields that are only needed when a single stage is inspected in -// detail (e.g. full FreightHistory beyond the current FreightCollection, -// PromotionTemplate step configuration, and Verification configuration). -message StageSummary { - // metadata contains the Stage's identity and Kubernetes object metadata. - optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; - // spec contains the subset of StageSpec fields needed by list/graph views. - optional StageSpecSummary spec = 2; - // status contains the subset of StageStatus fields needed by list/graph views. - optional StageStatusSummary status = 3; -} - -// StageSpecSummary is the subset of StageSpec fields returned by -// ListStageSummaries. See StageSummary for the motivation. -message StageSpecSummary { - // shard is the name of the shard that the Stage belongs to, mirroring - // StageSpec.shard. - string shard = 1; - // requestedFreight mirrors StageSpec.requestedFreight. This is needed in - // full to render graph edges between Stages and their upstream sources. - repeated github.com.akuity.kargo.api.v1alpha1.FreightRequest requested_freight = 2; - // promotionStepCount is the number of promotion steps defined in the - // Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. - // Use GetStage to retrieve the full step configuration. - int32 promotion_step_count = 3; - // hasVerification indicates whether the Stage defines a Verification. - // Use GetStage to retrieve the full Verification configuration. - bool has_verification = 4; -} - -// StageStatusSummary is the subset of StageStatus fields returned by -// ListStageSummaries. See StageSummary for the motivation. -message StageStatusSummary { - // conditions mirrors StageStatus.conditions. - repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 1; - // lastHandledRefresh mirrors StageStatus.lastHandledRefresh. - string last_handled_refresh = 2; - // currentFreight is the FreightCollection currently deployed to the Stage - // (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has - // been deployed. Use GetStage to retrieve the full FreightHistory. - optional github.com.akuity.kargo.api.v1alpha1.FreightCollection current_freight = 3; - // currentPromotion mirrors StageStatus.currentPromotion. - optional github.com.akuity.kargo.api.v1alpha1.PromotionReference current_promotion = 4; - // lastPromotion mirrors StageStatus.lastPromotion. - optional github.com.akuity.kargo.api.v1alpha1.PromotionReference last_promotion = 5; - // health mirrors StageStatus.health. - optional github.com.akuity.kargo.api.v1alpha1.Health health = 6; - // observedGeneration mirrors StageStatus.observedGeneration. - int64 observed_generation = 7; - // autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. - bool auto_promotion_enabled = 8; -} - -// ListStageSummariesRequest is the request for listing stage summaries -// within a project. -message ListStageSummariesRequest { - // project is the name of the project whose stage summaries should be listed. - string project = 1; - // freightOrigins is an optional list of Warehouse names. When non-empty, - // only Stages that request Freight originating from at least one of the - // named Warehouses (directly or transitively via upstream Stages) will be - // returned. Mirrors ListStagesRequest.freightOrigins. - repeated string freight_origins = 2; -} - -// ListStageSummariesResponse contains a list of stage summaries within a project. -message ListStageSummariesResponse { - // stageSummaries is the list of StageSummary objects found in the project. - repeated StageSummary stage_summaries = 1; - // resourceVersion is the Kubernetes ResourceVersion of the underlying - // StageList. Clients may pass this value to WatchStageSummaries to begin - // watching from the exact point this list was taken, receiving only - // subsequent changes without redundant initial events. - string resource_version = 2; -} - -// WatchStageSummariesRequest is the request for watching stage summaries via streaming. -message WatchStageSummariesRequest { - // project is the name of the project whose stage summaries should be watched. - string project = 1; - // name is the name of a specific stage to watch, if empty all stages in the project are watched. - string name = 2; - // freightOrigins is an optional list of Warehouse names. When non-empty, - // only events for Stages that request Freight originating from at least - // one of the named Warehouses (directly or transitively via upstream - // Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. - repeated string freight_origins = 3; - // resourceVersion is an optional Kubernetes ResourceVersion. When set, - // the watch begins at the specified version, allowing clients to resume - // from a prior list or watch without missing or duplicating events. - string resource_version = 4; -} - -// WatchStageSummariesResponse contains stage summary change notifications. -message WatchStageSummariesResponse { - // stageSummary is the StageSummary for the Stage that changed. - optional StageSummary stage_summary = 1; - // type indicates the type of change (ADDED, MODIFIED, DELETED). - string type = 2; -} - /* ClusterConfig Messages */ message GetClusterConfigRequest { diff --git a/api/service/v1alpha1/svcv1alpha1connect/service.connect.go b/api/service/v1alpha1/svcv1alpha1connect/service.connect.go index b6ca3740d7..c18e34314d 100644 --- a/api/service/v1alpha1/svcv1alpha1connect/service.connect.go +++ b/api/service/v1alpha1/svcv1alpha1connect/service.connect.go @@ -60,9 +60,6 @@ const ( KargoServiceRefreshResourceProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/RefreshResource" // KargoServiceListStagesProcedure is the fully-qualified name of the KargoService's ListStages RPC. KargoServiceListStagesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListStages" - // KargoServiceListStageSummariesProcedure is the fully-qualified name of the KargoService's - // ListStageSummaries RPC. - KargoServiceListStageSummariesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListStageSummaries" // KargoServiceListImagesProcedure is the fully-qualified name of the KargoService's ListImages RPC. KargoServiceListImagesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/ListImages" // KargoServiceGetStageProcedure is the fully-qualified name of the KargoService's GetStage RPC. @@ -73,9 +70,6 @@ const ( // KargoServiceWatchStagesProcedure is the fully-qualified name of the KargoService's WatchStages // RPC. KargoServiceWatchStagesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/WatchStages" - // KargoServiceWatchStageSummariesProcedure is the fully-qualified name of the KargoService's - // WatchStageSummaries RPC. - KargoServiceWatchStageSummariesProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/WatchStageSummaries" // KargoServiceDeleteStageProcedure is the fully-qualified name of the KargoService's DeleteStage // RPC. KargoServiceDeleteStageProcedure = "/akuity.io.kargo.service.v1alpha1.KargoService/DeleteStage" @@ -282,12 +276,10 @@ var ( kargoServiceDeleteResourceMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("DeleteResource") kargoServiceRefreshResourceMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("RefreshResource") kargoServiceListStagesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("ListStages") - kargoServiceListStageSummariesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("ListStageSummaries") kargoServiceListImagesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("ListImages") kargoServiceGetStageMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("GetStage") kargoServiceGetStageHealthOutputsMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("GetStageHealthOutputs") kargoServiceWatchStagesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("WatchStages") - kargoServiceWatchStageSummariesMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("WatchStageSummaries") kargoServiceDeleteStageMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("DeleteStage") kargoServiceGetClusterConfigMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("GetClusterConfig") kargoServiceDeleteClusterConfigMethodDescriptor = kargoServiceServiceDescriptor.Methods().ByName("DeleteClusterConfig") @@ -379,29 +371,24 @@ type KargoServiceClient interface { DeleteResource(context.Context, *connect.Request[v1alpha1.DeleteResourceRequest]) (*connect.Response[v1alpha1.DeleteResourceResponse], error) // RefreshResource triggers a refresh of the specified Kargo resource. RefreshResource(context.Context, *connect.Request[v1alpha1.RefreshResourceRequest]) (*connect.Response[v1alpha1.RefreshResourceResponse], error) - // ListStages retrieves all stages within a project. + // ListStages retrieves all stages within a project. Pass summary=true to + // receive a lightweight projection intended for list and graph views + // (heavy fields are stripped from each returned Stage; see the summary + // field on ListStagesRequest for details). ListStages(context.Context, *connect.Request[v1alpha1.ListStagesRequest]) (*connect.Response[v1alpha1.ListStagesResponse], error) - // ListStageSummaries retrieves a lightweight projection of Stages within a - // project, containing only the fields typically required to render list - // and graph views. Use GetStage to retrieve the full Stage resource when - // detail-level fields are needed. - ListStageSummaries(context.Context, *connect.Request[v1alpha1.ListStageSummariesRequest]) (*connect.Response[v1alpha1.ListStageSummariesResponse], error) // ListImages returns available images and their usage across stages. ListImages(context.Context, *connect.Request[v1alpha1.ListImagesRequest]) (*connect.Response[v1alpha1.ListImagesResponse], error) // GetStage retrieves details of a specific stage. GetStage(context.Context, *connect.Request[v1alpha1.GetStageRequest]) (*connect.Response[v1alpha1.GetStageResponse], error) // GetStageHealthOutputs returns the raw health output blob for the // specified Stages in a project. Intended for clients that use - // ListStageSummaries for the list and need to resolve per-argocd-app + // ListStages with summary=true and need to resolve per-argocd-app // health only for the Stages currently in viewport. Stages that do not // exist or have no health output recorded are omitted from the response. GetStageHealthOutputs(context.Context, *connect.Request[v1alpha1.GetStageHealthOutputsRequest]) (*connect.Response[v1alpha1.GetStageHealthOutputsResponse], error) // WatchStages provides a streaming interface to monitor stage changes. + // Pass summary=true to apply the same projection as ListStages. WatchStages(context.Context, *connect.Request[v1alpha1.WatchStagesRequest]) (*connect.ServerStreamForClient[v1alpha1.WatchStagesResponse], error) - // WatchStageSummaries provides a streaming interface to monitor stage - // changes, returning the same lightweight projection as - // ListStageSummaries for each event. - WatchStageSummaries(context.Context, *connect.Request[v1alpha1.WatchStageSummariesRequest]) (*connect.ServerStreamForClient[v1alpha1.WatchStageSummariesResponse], error) // DeleteStage removes a stage from the system. DeleteStage(context.Context, *connect.Request[v1alpha1.DeleteStageRequest]) (*connect.Response[v1alpha1.DeleteStageResponse], error) // GetClusterConfig retrieves cluster-level configuration settings. @@ -623,12 +610,6 @@ func NewKargoServiceClient(httpClient connect.HTTPClient, baseURL string, opts . connect.WithSchema(kargoServiceListStagesMethodDescriptor), connect.WithClientOptions(opts...), ), - listStageSummaries: connect.NewClient[v1alpha1.ListStageSummariesRequest, v1alpha1.ListStageSummariesResponse]( - httpClient, - baseURL+KargoServiceListStageSummariesProcedure, - connect.WithSchema(kargoServiceListStageSummariesMethodDescriptor), - connect.WithClientOptions(opts...), - ), listImages: connect.NewClient[v1alpha1.ListImagesRequest, v1alpha1.ListImagesResponse]( httpClient, baseURL+KargoServiceListImagesProcedure, @@ -653,12 +634,6 @@ func NewKargoServiceClient(httpClient connect.HTTPClient, baseURL string, opts . connect.WithSchema(kargoServiceWatchStagesMethodDescriptor), connect.WithClientOptions(opts...), ), - watchStageSummaries: connect.NewClient[v1alpha1.WatchStageSummariesRequest, v1alpha1.WatchStageSummariesResponse]( - httpClient, - baseURL+KargoServiceWatchStageSummariesProcedure, - connect.WithSchema(kargoServiceWatchStageSummariesMethodDescriptor), - connect.WithClientOptions(opts...), - ), deleteStage: connect.NewClient[v1alpha1.DeleteStageRequest, v1alpha1.DeleteStageResponse]( httpClient, baseURL+KargoServiceDeleteStageProcedure, @@ -1076,12 +1051,10 @@ type kargoServiceClient struct { deleteResource *connect.Client[v1alpha1.DeleteResourceRequest, v1alpha1.DeleteResourceResponse] refreshResource *connect.Client[v1alpha1.RefreshResourceRequest, v1alpha1.RefreshResourceResponse] listStages *connect.Client[v1alpha1.ListStagesRequest, v1alpha1.ListStagesResponse] - listStageSummaries *connect.Client[v1alpha1.ListStageSummariesRequest, v1alpha1.ListStageSummariesResponse] listImages *connect.Client[v1alpha1.ListImagesRequest, v1alpha1.ListImagesResponse] getStage *connect.Client[v1alpha1.GetStageRequest, v1alpha1.GetStageResponse] getStageHealthOutputs *connect.Client[v1alpha1.GetStageHealthOutputsRequest, v1alpha1.GetStageHealthOutputsResponse] watchStages *connect.Client[v1alpha1.WatchStagesRequest, v1alpha1.WatchStagesResponse] - watchStageSummaries *connect.Client[v1alpha1.WatchStageSummariesRequest, v1alpha1.WatchStageSummariesResponse] deleteStage *connect.Client[v1alpha1.DeleteStageRequest, v1alpha1.DeleteStageResponse] getClusterConfig *connect.Client[v1alpha1.GetClusterConfigRequest, v1alpha1.GetClusterConfigResponse] deleteClusterConfig *connect.Client[v1alpha1.DeleteClusterConfigRequest, v1alpha1.DeleteClusterConfigResponse] @@ -1202,11 +1175,6 @@ func (c *kargoServiceClient) ListStages(ctx context.Context, req *connect.Reques return c.listStages.CallUnary(ctx, req) } -// ListStageSummaries calls akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries. -func (c *kargoServiceClient) ListStageSummaries(ctx context.Context, req *connect.Request[v1alpha1.ListStageSummariesRequest]) (*connect.Response[v1alpha1.ListStageSummariesResponse], error) { - return c.listStageSummaries.CallUnary(ctx, req) -} - // ListImages calls akuity.io.kargo.service.v1alpha1.KargoService.ListImages. func (c *kargoServiceClient) ListImages(ctx context.Context, req *connect.Request[v1alpha1.ListImagesRequest]) (*connect.Response[v1alpha1.ListImagesResponse], error) { return c.listImages.CallUnary(ctx, req) @@ -1227,11 +1195,6 @@ func (c *kargoServiceClient) WatchStages(ctx context.Context, req *connect.Reque return c.watchStages.CallServerStream(ctx, req) } -// WatchStageSummaries calls akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries. -func (c *kargoServiceClient) WatchStageSummaries(ctx context.Context, req *connect.Request[v1alpha1.WatchStageSummariesRequest]) (*connect.ServerStreamForClient[v1alpha1.WatchStageSummariesResponse], error) { - return c.watchStageSummaries.CallServerStream(ctx, req) -} - // DeleteStage calls akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage. func (c *kargoServiceClient) DeleteStage(ctx context.Context, req *connect.Request[v1alpha1.DeleteStageRequest]) (*connect.Response[v1alpha1.DeleteStageResponse], error) { return c.deleteStage.CallUnary(ctx, req) @@ -1600,29 +1563,24 @@ type KargoServiceHandler interface { DeleteResource(context.Context, *connect.Request[v1alpha1.DeleteResourceRequest]) (*connect.Response[v1alpha1.DeleteResourceResponse], error) // RefreshResource triggers a refresh of the specified Kargo resource. RefreshResource(context.Context, *connect.Request[v1alpha1.RefreshResourceRequest]) (*connect.Response[v1alpha1.RefreshResourceResponse], error) - // ListStages retrieves all stages within a project. + // ListStages retrieves all stages within a project. Pass summary=true to + // receive a lightweight projection intended for list and graph views + // (heavy fields are stripped from each returned Stage; see the summary + // field on ListStagesRequest for details). ListStages(context.Context, *connect.Request[v1alpha1.ListStagesRequest]) (*connect.Response[v1alpha1.ListStagesResponse], error) - // ListStageSummaries retrieves a lightweight projection of Stages within a - // project, containing only the fields typically required to render list - // and graph views. Use GetStage to retrieve the full Stage resource when - // detail-level fields are needed. - ListStageSummaries(context.Context, *connect.Request[v1alpha1.ListStageSummariesRequest]) (*connect.Response[v1alpha1.ListStageSummariesResponse], error) // ListImages returns available images and their usage across stages. ListImages(context.Context, *connect.Request[v1alpha1.ListImagesRequest]) (*connect.Response[v1alpha1.ListImagesResponse], error) // GetStage retrieves details of a specific stage. GetStage(context.Context, *connect.Request[v1alpha1.GetStageRequest]) (*connect.Response[v1alpha1.GetStageResponse], error) // GetStageHealthOutputs returns the raw health output blob for the // specified Stages in a project. Intended for clients that use - // ListStageSummaries for the list and need to resolve per-argocd-app + // ListStages with summary=true and need to resolve per-argocd-app // health only for the Stages currently in viewport. Stages that do not // exist or have no health output recorded are omitted from the response. GetStageHealthOutputs(context.Context, *connect.Request[v1alpha1.GetStageHealthOutputsRequest]) (*connect.Response[v1alpha1.GetStageHealthOutputsResponse], error) // WatchStages provides a streaming interface to monitor stage changes. + // Pass summary=true to apply the same projection as ListStages. WatchStages(context.Context, *connect.Request[v1alpha1.WatchStagesRequest], *connect.ServerStream[v1alpha1.WatchStagesResponse]) error - // WatchStageSummaries provides a streaming interface to monitor stage - // changes, returning the same lightweight projection as - // ListStageSummaries for each event. - WatchStageSummaries(context.Context, *connect.Request[v1alpha1.WatchStageSummariesRequest], *connect.ServerStream[v1alpha1.WatchStageSummariesResponse]) error // DeleteStage removes a stage from the system. DeleteStage(context.Context, *connect.Request[v1alpha1.DeleteStageRequest]) (*connect.Response[v1alpha1.DeleteStageResponse], error) // GetClusterConfig retrieves cluster-level configuration settings. @@ -1840,12 +1798,6 @@ func NewKargoServiceHandler(svc KargoServiceHandler, opts ...connect.HandlerOpti connect.WithSchema(kargoServiceListStagesMethodDescriptor), connect.WithHandlerOptions(opts...), ) - kargoServiceListStageSummariesHandler := connect.NewUnaryHandler( - KargoServiceListStageSummariesProcedure, - svc.ListStageSummaries, - connect.WithSchema(kargoServiceListStageSummariesMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) kargoServiceListImagesHandler := connect.NewUnaryHandler( KargoServiceListImagesProcedure, svc.ListImages, @@ -1870,12 +1822,6 @@ func NewKargoServiceHandler(svc KargoServiceHandler, opts ...connect.HandlerOpti connect.WithSchema(kargoServiceWatchStagesMethodDescriptor), connect.WithHandlerOptions(opts...), ) - kargoServiceWatchStageSummariesHandler := connect.NewServerStreamHandler( - KargoServiceWatchStageSummariesProcedure, - svc.WatchStageSummaries, - connect.WithSchema(kargoServiceWatchStageSummariesMethodDescriptor), - connect.WithHandlerOptions(opts...), - ) kargoServiceDeleteStageHandler := connect.NewUnaryHandler( KargoServiceDeleteStageProcedure, svc.DeleteStage, @@ -2300,8 +2246,6 @@ func NewKargoServiceHandler(svc KargoServiceHandler, opts ...connect.HandlerOpti kargoServiceRefreshResourceHandler.ServeHTTP(w, r) case KargoServiceListStagesProcedure: kargoServiceListStagesHandler.ServeHTTP(w, r) - case KargoServiceListStageSummariesProcedure: - kargoServiceListStageSummariesHandler.ServeHTTP(w, r) case KargoServiceListImagesProcedure: kargoServiceListImagesHandler.ServeHTTP(w, r) case KargoServiceGetStageProcedure: @@ -2310,8 +2254,6 @@ func NewKargoServiceHandler(svc KargoServiceHandler, opts ...connect.HandlerOpti kargoServiceGetStageHealthOutputsHandler.ServeHTTP(w, r) case KargoServiceWatchStagesProcedure: kargoServiceWatchStagesHandler.ServeHTTP(w, r) - case KargoServiceWatchStageSummariesProcedure: - kargoServiceWatchStageSummariesHandler.ServeHTTP(w, r) case KargoServiceDeleteStageProcedure: kargoServiceDeleteStageHandler.ServeHTTP(w, r) case KargoServiceGetClusterConfigProcedure: @@ -2495,10 +2437,6 @@ func (UnimplementedKargoServiceHandler) ListStages(context.Context, *connect.Req return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.ListStages is not implemented")) } -func (UnimplementedKargoServiceHandler) ListStageSummaries(context.Context, *connect.Request[v1alpha1.ListStageSummariesRequest]) (*connect.Response[v1alpha1.ListStageSummariesResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries is not implemented")) -} - func (UnimplementedKargoServiceHandler) ListImages(context.Context, *connect.Request[v1alpha1.ListImagesRequest]) (*connect.Response[v1alpha1.ListImagesResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.ListImages is not implemented")) } @@ -2515,10 +2453,6 @@ func (UnimplementedKargoServiceHandler) WatchStages(context.Context, *connect.Re return connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.WatchStages is not implemented")) } -func (UnimplementedKargoServiceHandler) WatchStageSummaries(context.Context, *connect.Request[v1alpha1.WatchStageSummariesRequest], *connect.ServerStream[v1alpha1.WatchStageSummariesResponse]) error { - return connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries is not implemented")) -} - func (UnimplementedKargoServiceHandler) DeleteStage(context.Context, *connect.Request[v1alpha1.DeleteStageRequest]) (*connect.Response[v1alpha1.DeleteStageResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("akuity.io.kargo.service.v1alpha1.KargoService.DeleteStage is not implemented")) } diff --git a/docs/docs/90-api-documentation.md b/docs/docs/90-api-documentation.md index d62de8ee44..31399b0a44 100644 --- a/docs/docs/90-api-documentation.md +++ b/docs/docs/90-api-documentation.md @@ -25,12 +25,10 @@ Stability is not guaranteed. | DeleteResource | [DeleteResourceRequest](#akuity-io-kargo-service-v1alpha1-DeleteResourceRequest) | [DeleteResourceResponse](#akuity-io-kargo-service-v1alpha1-DeleteResourceResponse) | | RefreshResource | [RefreshResourceRequest](#akuity-io-kargo-service-v1alpha1-RefreshResourceRequest) | [RefreshResourceResponse](#akuity-io-kargo-service-v1alpha1-RefreshResourceResponse) | | ListStages | [ListStagesRequest](#akuity-io-kargo-service-v1alpha1-ListStagesRequest) | [ListStagesResponse](#akuity-io-kargo-service-v1alpha1-ListStagesResponse) | -| ListStageSummaries | [ListStageSummariesRequest](#akuity-io-kargo-service-v1alpha1-ListStageSummariesRequest) | [ListStageSummariesResponse](#akuity-io-kargo-service-v1alpha1-ListStageSummariesResponse) | | ListImages | [ListImagesRequest](#akuity-io-kargo-service-v1alpha1-ListImagesRequest) | [ListImagesResponse](#akuity-io-kargo-service-v1alpha1-ListImagesResponse) | | GetStage | [GetStageRequest](#akuity-io-kargo-service-v1alpha1-GetStageRequest) | [GetStageResponse](#akuity-io-kargo-service-v1alpha1-GetStageResponse) | | GetStageHealthOutputs | [GetStageHealthOutputsRequest](#akuity-io-kargo-service-v1alpha1-GetStageHealthOutputsRequest) | [GetStageHealthOutputsResponse](#akuity-io-kargo-service-v1alpha1-GetStageHealthOutputsResponse) | | WatchStages | [WatchStagesRequest](#akuity-io-kargo-service-v1alpha1-WatchStagesRequest) | [WatchStagesResponse](#akuity-io-kargo-service-v1alpha1-WatchStagesResponse)(stream) | -| WatchStageSummaries | [WatchStageSummariesRequest](#akuity-io-kargo-service-v1alpha1-WatchStageSummariesRequest) | [WatchStageSummariesResponse](#akuity-io-kargo-service-v1alpha1-WatchStageSummariesResponse)(stream) | | DeleteStage | [DeleteStageRequest](#akuity-io-kargo-service-v1alpha1-DeleteStageRequest) | [DeleteStageResponse](#akuity-io-kargo-service-v1alpha1-DeleteStageResponse) | | GetClusterConfig | [GetClusterConfigRequest](#akuity-io-kargo-service-v1alpha1-GetClusterConfigRequest) | [GetClusterConfigResponse](#akuity-io-kargo-service-v1alpha1-GetClusterConfigResponse) | | DeleteClusterConfig | [DeleteClusterConfigRequest](#akuity-io-kargo-service-v1alpha1-DeleteClusterConfigRequest) | [DeleteClusterConfigResponse](#akuity-io-kargo-service-v1alpha1-DeleteClusterConfigResponse) | @@ -1206,24 +1204,6 @@ Stability is not guaranteed. | roles | [github.com.akuity.kargo.api.rbac.v1alpha1.Role](#github-com-akuity-kargo-api-rbac-v1alpha1-Role) | Note: oneof and repeated do not work together roles is a list of Kargo Role virtual resources. | | resources | [github.com.akuity.kargo.api.rbac.v1alpha1.RoleResources](#github-com-akuity-kargo-api-rbac-v1alpha1-RoleResources) | resources is a list of RoleResource objects encapsulating the Kargo Roles' underlying Kubernetes resources. | - - -### ListStageSummariesRequest - ListStageSummariesRequest is the request for listing stage summaries within a project. -| Field | Type | Description | -| ----- | ---- | ----------- | -| project | [string](#string) | project is the name of the project whose stage summaries should be listed. | -| freight_origins | [string](#string) | freightOrigins is an optional list of Warehouse names. When non-empty, only Stages that request Freight originating from at least one of the named Warehouses (directly or transitively via upstream Stages) will be returned. Mirrors ListStagesRequest.freightOrigins. | - - - -### ListStageSummariesResponse - ListStageSummariesResponse contains a list of stage summaries within a project. -| Field | Type | Description | -| ----- | ---- | ----------- | -| stage_summaries | [StageSummary](#akuity-io-kargo-service-v1alpha1-StageSummary) | stageSummaries is the list of StageSummary objects found in the project. | -| resource_version | [string](#string) | resourceVersion is the Kubernetes ResourceVersion of the underlying StageList. Clients may pass this value to WatchStageSummaries to begin watching from the exact point this list was taken, receiving only subsequent changes without redundant initial events. | - ### ListStagesRequest @@ -1232,6 +1212,7 @@ Stability is not guaranteed. | ----- | ---- | ----------- | | project | [string](#string) | project is the name of the project whose stages should be listed. | | freight_origins | [string](#string) | freight_origins is an optional list of Warehouse names to filter Stages by. When specified, only Stages that subscribe to at least one of the named Warehouses are returned. | +| summary | [bool](#bool) | summary, when true, strips heavy fields from each Stage in the response. Intended for list and graph views that render many Stages but do not need full FreightHistory, PromotionTemplate step configuration, or the raw health output blob. Stripped Stages still carry: metadata, shard, requestedFreight, promotionTemplate step skeletons (kind/as/name but not config), verification, conditions, currentFreight (history[0]), currentPromotion, lastPromotion, health metadata (without output.raw), observedGeneration, autoPromotionEnabled. Use summary=false (default) to retrieve the full Stage, or GetStage for a single Stage in detail. | @@ -1239,7 +1220,8 @@ Stability is not guaranteed. ListStagesResponse contains a list of stages within a project. | Field | Type | Description | | ----- | ---- | ----------- | -| stages | [github.com.akuity.kargo.api.v1alpha1.Stage](#github-com-akuity-kargo-api-v1alpha1-Stage) | stages is the list of Stage resources found in the project. | +| stages | [github.com.akuity.kargo.api.v1alpha1.Stage](#github-com-akuity-kargo-api-v1alpha1-Stage) | stages is the list of Stage resources found in the project. When the corresponding request set summary=true, each Stage has heavy fields stripped: status.freightHistory is truncated to index 0, spec.promotionTemplate.spec.steps[*].config is cleared, and status.health.output is nil. | +| resource_version | [string](#string) | resource_version is the Kubernetes ResourceVersion of the underlying StageList. Clients may pass this value to WatchStages to begin watching from the exact point this list was taken, receiving only subsequent changes without redundant initial events. | @@ -1387,42 +1369,6 @@ Stability is not guaranteed. | ----- | ---- | ----------- | | role | [github.com.akuity.kargo.api.rbac.v1alpha1.Role](#github-com-akuity-kargo-api-rbac-v1alpha1-Role) | role is the Kargo Role virtual resource that was the subject of the revocation. | - - -### StageSpecSummary - StageSpecSummary is the subset of StageSpec fields returned by ListStageSummaries. See StageSummary for the motivation. -| Field | Type | Description | -| ----- | ---- | ----------- | -| shard | [string](#string) | shard is the name of the shard that the Stage belongs to, mirroring StageSpec.shard. | -| requested_freight | [github.com.akuity.kargo.api.v1alpha1.FreightRequest](#github-com-akuity-kargo-api-v1alpha1-FreightRequest) | requestedFreight mirrors StageSpec.requestedFreight. This is needed in full to render graph edges between Stages and their upstream sources. | -| promotion_step_count | [int32](#int32) | promotionStepCount is the number of promotion steps defined in the Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. Use GetStage to retrieve the full step configuration. | -| has_verification | [bool](#bool) | hasVerification indicates whether the Stage defines a Verification. Use GetStage to retrieve the full Verification configuration. | - - - -### StageStatusSummary - StageStatusSummary is the subset of StageStatus fields returned by ListStageSummaries. See StageSummary for the motivation. -| Field | Type | Description | -| ----- | ---- | ----------- | -| conditions | k8s.io.apimachinery.pkg.apis.meta.v1.Condition | conditions mirrors StageStatus.conditions. | -| last_handled_refresh | [string](#string) | lastHandledRefresh mirrors StageStatus.lastHandledRefresh. | -| current_freight | [github.com.akuity.kargo.api.v1alpha1.FreightCollection](#github-com-akuity-kargo-api-v1alpha1-FreightCollection) | currentFreight is the FreightCollection currently deployed to the Stage (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has been deployed. Use GetStage to retrieve the full FreightHistory. | -| current_promotion | [github.com.akuity.kargo.api.v1alpha1.PromotionReference](#github-com-akuity-kargo-api-v1alpha1-PromotionReference) | currentPromotion mirrors StageStatus.currentPromotion. | -| last_promotion | [github.com.akuity.kargo.api.v1alpha1.PromotionReference](#github-com-akuity-kargo-api-v1alpha1-PromotionReference) | lastPromotion mirrors StageStatus.lastPromotion. | -| health | [github.com.akuity.kargo.api.v1alpha1.Health](#github-com-akuity-kargo-api-v1alpha1-Health) | health mirrors StageStatus.health. | -| observed_generation | [int64](#int64) | observedGeneration mirrors StageStatus.observedGeneration. | -| auto_promotion_enabled | [bool](#bool) | autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. | - - - -### StageSummary - StageSummary is a lightweight projection of a Stage resource intended for use by clients rendering list or graph views of many stages. It omits heavy fields that are only needed when a single stage is inspected in detail (e.g. full FreightHistory beyond the current FreightCollection, PromotionTemplate step configuration, and Verification configuration). -| Field | Type | Description | -| ----- | ---- | ----------- | -| metadata | k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta | metadata contains the Stage's identity and Kubernetes object metadata. | -| spec | [StageSpecSummary](#akuity-io-kargo-service-v1alpha1-StageSpecSummary) | spec contains the subset of StageSpec fields needed by list/graph views. | -| status | [StageStatusSummary](#akuity-io-kargo-service-v1alpha1-StageStatusSummary) | status contains the subset of StageStatus fields needed by list/graph views. | - ### TagMap @@ -1677,26 +1623,6 @@ Stability is not guaranteed. | promotion | [github.com.akuity.kargo.api.v1alpha1.Promotion](#github-com-akuity-kargo-api-v1alpha1-Promotion) | promotion is the Promotion resource that changed. | | type | [string](#string) | type indicates the type of change (ADDED, MODIFIED, DELETED). | - - -### WatchStageSummariesRequest - WatchStageSummariesRequest is the request for watching stage summaries via streaming. -| Field | Type | Description | -| ----- | ---- | ----------- | -| project | [string](#string) | project is the name of the project whose stage summaries should be watched. | -| name | [string](#string) | name is the name of a specific stage to watch, if empty all stages in the project are watched. | -| freight_origins | [string](#string) | freightOrigins is an optional list of Warehouse names. When non-empty, only events for Stages that request Freight originating from at least one of the named Warehouses (directly or transitively via upstream Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. | -| resource_version | [string](#string) | resourceVersion is an optional Kubernetes ResourceVersion. When set, the watch begins at the specified version, allowing clients to resume from a prior list or watch without missing or duplicating events. | - - - -### WatchStageSummariesResponse - WatchStageSummariesResponse contains stage summary change notifications. -| Field | Type | Description | -| ----- | ---- | ----------- | -| stage_summary | [StageSummary](#akuity-io-kargo-service-v1alpha1-StageSummary) | stageSummary is the StageSummary for the Stage that changed. | -| type | [string](#string) | type indicates the type of change (ADDED, MODIFIED, DELETED). | - ### WatchStagesRequest @@ -1706,6 +1632,8 @@ Stability is not guaranteed. | project | [string](#string) | project is the name of the project whose stages should be watched. | | name | [string](#string) | name is the name of a specific stage to watch, if empty all stages in the project are watched. | | freight_origins | [string](#string) | freight_origins is an optional list of Warehouse names to filter Stages by. When specified, only events for Stages that subscribe to at least one of the named Warehouses are streamed. | +| summary | [bool](#bool) | summary, when true, applies the same projection as ListStagesRequest.summary to each streamed Stage. See the summary field on ListStagesRequest for the list of fields stripped. | +| resource_version | [string](#string) | resource_version is an optional Kubernetes ResourceVersion. When set, the watch begins at the specified version, allowing clients to resume from a prior list (see ListStagesResponse.resource_version) or watch without missing or duplicating events. | diff --git a/pkg/client/generated/core/core_client.go b/pkg/client/generated/core/core_client.go index 2c43a93ae6..868ae31c89 100644 --- a/pkg/client/generated/core/core_client.go +++ b/pkg/client/generated/core/core_client.go @@ -117,8 +117,6 @@ type ClientService interface { ListSharedConfigMaps(params *ListSharedConfigMapsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*ListSharedConfigMapsOK, error) - ListStageSummaries(params *ListStageSummariesParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*ListStageSummariesOK, error) - ListStages(params *ListStagesParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*ListStagesOK, error) ListSystemConfigMaps(params *ListSystemConfigMapsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*ListSystemConfigMapsOK, error) @@ -1189,7 +1187,7 @@ func (a *Client) GetStage(params *GetStageParams, authInfo runtime.ClientAuthInf in a project. Stages that do not exist or have no recorded health output are omitted from the response. Intended for -clients that use ListStageSummaries (which omits the output +clients that use ListStages with summary=true (which omits the output blob) and need to lazily resolve health for Stages currently in viewport. */ @@ -1660,63 +1658,13 @@ func (a *Client) ListSharedConfigMaps(params *ListSharedConfigMapsParams, authIn panic(msg) } -/* - ListStageSummaries lists stage summaries - - List a lightweight projection of Stage resources from a - -project's namespace. Intended for UI list and graph views that -need metadata and current state for many Stages at once but do -not need full FreightHistory, PromotionTemplate steps, or -Verification configuration. Use GetStage for detail fields. -*/ -func (a *Client) ListStageSummaries(params *ListStageSummariesParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*ListStageSummariesOK, error) { - // NOTE: parameters are not validated before sending - if params == nil { - params = NewListStageSummariesParams() - } - op := &runtime.ClientOperation{ - ID: "ListStageSummaries", - Method: "GET", - PathPattern: "/v1beta1/projects/{project}/stage-summaries", - ProducesMediaTypes: []string{"application/json"}, - ConsumesMediaTypes: []string{"application/json"}, - Schemes: []string{"http"}, - Params: params, - Reader: &ListStageSummariesReader{formats: a.formats}, - AuthInfo: authInfo, - Context: params.Context, - Client: params.HTTPClient, - } - for _, opt := range opts { - opt(op) - } - result, err := a.transport.Submit(op) - if err != nil { - return nil, err - } - - // only one success response has to be checked - success, ok := result.(*ListStageSummariesOK) - if ok { - return success, nil - } - - // unexpected success response. - - // no default response is defined. - // - // safeguard: normally, in the absence of a default response, unknown success responses return an error above: so this is a codegen issue - msg := fmt.Sprintf("unexpected success response for ListStageSummaries: API contract not enforced by server. Client expected to get an error, but got: %T", result) - panic(msg) -} - /* ListStages lists stages List Stage resources from a project's namespace. Returns a -StageList resource. +StageList resource. Pass summary=true to receive a lightweight +projection for list and graph views. */ func (a *Client) ListStages(params *ListStagesParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*ListStagesOK, error) { // NOTE: parameters are not validated before sending diff --git a/pkg/client/generated/core/list_stage_summaries_parameters.go b/pkg/client/generated/core/list_stage_summaries_parameters.go deleted file mode 100644 index 5730c2d619..0000000000 --- a/pkg/client/generated/core/list_stage_summaries_parameters.go +++ /dev/null @@ -1,194 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package core - -import ( - "context" - "net/http" - "time" - - "github.com/go-openapi/errors" - "github.com/go-openapi/runtime" - cr "github.com/go-openapi/runtime/client" - "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" -) - -// NewListStageSummariesParams creates a new ListStageSummariesParams object, -// with the default timeout for this client. -// -// Default values are not hydrated, since defaults are normally applied by the API server side. -// -// To enforce default values in parameter, use SetDefaults or WithDefaults. -func NewListStageSummariesParams() *ListStageSummariesParams { - return &ListStageSummariesParams{ - timeout: cr.DefaultTimeout, - } -} - -// NewListStageSummariesParamsWithTimeout creates a new ListStageSummariesParams object -// with the ability to set a timeout on a request. -func NewListStageSummariesParamsWithTimeout(timeout time.Duration) *ListStageSummariesParams { - return &ListStageSummariesParams{ - timeout: timeout, - } -} - -// NewListStageSummariesParamsWithContext creates a new ListStageSummariesParams object -// with the ability to set a context for a request. -func NewListStageSummariesParamsWithContext(ctx context.Context) *ListStageSummariesParams { - return &ListStageSummariesParams{ - Context: ctx, - } -} - -// NewListStageSummariesParamsWithHTTPClient creates a new ListStageSummariesParams object -// with the ability to set a custom HTTPClient for a request. -func NewListStageSummariesParamsWithHTTPClient(client *http.Client) *ListStageSummariesParams { - return &ListStageSummariesParams{ - HTTPClient: client, - } -} - -/* -ListStageSummariesParams contains all the parameters to send to the API endpoint - - for the list stage summaries operation. - - Typically these are written to a http.Request. -*/ -type ListStageSummariesParams struct { - - /* FreightOrigins. - - Warehouse name(s) to filter by - */ - FreightOrigins []string - - /* Project. - - Project name - */ - Project string - - timeout time.Duration - Context context.Context - HTTPClient *http.Client -} - -// WithDefaults hydrates default values in the list stage summaries params (not the query body). -// -// All values with no default are reset to their zero value. -func (o *ListStageSummariesParams) WithDefaults() *ListStageSummariesParams { - o.SetDefaults() - return o -} - -// SetDefaults hydrates default values in the list stage summaries params (not the query body). -// -// All values with no default are reset to their zero value. -func (o *ListStageSummariesParams) SetDefaults() { - // no default values defined for this parameter -} - -// WithTimeout adds the timeout to the list stage summaries params -func (o *ListStageSummariesParams) WithTimeout(timeout time.Duration) *ListStageSummariesParams { - o.SetTimeout(timeout) - return o -} - -// SetTimeout adds the timeout to the list stage summaries params -func (o *ListStageSummariesParams) SetTimeout(timeout time.Duration) { - o.timeout = timeout -} - -// WithContext adds the context to the list stage summaries params -func (o *ListStageSummariesParams) WithContext(ctx context.Context) *ListStageSummariesParams { - o.SetContext(ctx) - return o -} - -// SetContext adds the context to the list stage summaries params -func (o *ListStageSummariesParams) SetContext(ctx context.Context) { - o.Context = ctx -} - -// WithHTTPClient adds the HTTPClient to the list stage summaries params -func (o *ListStageSummariesParams) WithHTTPClient(client *http.Client) *ListStageSummariesParams { - o.SetHTTPClient(client) - return o -} - -// SetHTTPClient adds the HTTPClient to the list stage summaries params -func (o *ListStageSummariesParams) SetHTTPClient(client *http.Client) { - o.HTTPClient = client -} - -// WithFreightOrigins adds the freightOrigins to the list stage summaries params -func (o *ListStageSummariesParams) WithFreightOrigins(freightOrigins []string) *ListStageSummariesParams { - o.SetFreightOrigins(freightOrigins) - return o -} - -// SetFreightOrigins adds the freightOrigins to the list stage summaries params -func (o *ListStageSummariesParams) SetFreightOrigins(freightOrigins []string) { - o.FreightOrigins = freightOrigins -} - -// WithProject adds the project to the list stage summaries params -func (o *ListStageSummariesParams) WithProject(project string) *ListStageSummariesParams { - o.SetProject(project) - return o -} - -// SetProject adds the project to the list stage summaries params -func (o *ListStageSummariesParams) SetProject(project string) { - o.Project = project -} - -// WriteToRequest writes these params to a swagger request -func (o *ListStageSummariesParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { - - if err := r.SetTimeout(o.timeout); err != nil { - return err - } - var res []error - - if o.FreightOrigins != nil { - - // binding items for freightOrigins - joinedFreightOrigins := o.bindParamFreightOrigins(reg) - - // query array param freightOrigins - if err := r.SetQueryParam("freightOrigins", joinedFreightOrigins...); err != nil { - return err - } - } - - // path param project - if err := r.SetPathParam("project", o.Project); err != nil { - return err - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -// bindParamListStageSummaries binds the parameter freightOrigins -func (o *ListStageSummariesParams) bindParamFreightOrigins(formats strfmt.Registry) []string { - freightOriginsIR := o.FreightOrigins - - var freightOriginsIC []string - for _, freightOriginsIIR := range freightOriginsIR { // explode []string - - freightOriginsIIV := freightOriginsIIR // string as string - freightOriginsIC = append(freightOriginsIC, freightOriginsIIV) - } - - // items.CollectionFormat: "multi" - freightOriginsIS := swag.JoinByFormat(freightOriginsIC, "multi") - - return freightOriginsIS -} diff --git a/pkg/client/generated/core/list_stage_summaries_responses.go b/pkg/client/generated/core/list_stage_summaries_responses.go deleted file mode 100644 index e364566375..0000000000 --- a/pkg/client/generated/core/list_stage_summaries_responses.go +++ /dev/null @@ -1,104 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package core - -import ( - "encoding/json" - stderrors "errors" - "fmt" - "io" - - "github.com/go-openapi/runtime" - "github.com/go-openapi/strfmt" - - "github.com/akuity/kargo/pkg/client/generated/models" -) - -// ListStageSummariesReader is a Reader for the ListStageSummaries structure. -type ListStageSummariesReader struct { - formats strfmt.Registry -} - -// ReadResponse reads a server response into the received o. -func (o *ListStageSummariesReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (any, error) { - switch response.Code() { - case 200: - result := NewListStageSummariesOK() - if err := result.readResponse(response, consumer, o.formats); err != nil { - return nil, err - } - return result, nil - default: - return nil, runtime.NewAPIError("[GET /v1beta1/projects/{project}/stage-summaries] ListStageSummaries", response, response.Code()) - } -} - -// NewListStageSummariesOK creates a ListStageSummariesOK with default headers values -func NewListStageSummariesOK() *ListStageSummariesOK { - return &ListStageSummariesOK{} -} - -/* -ListStageSummariesOK describes a response with status code 200, with default header values. - -OK -*/ -type ListStageSummariesOK struct { - Payload *models.GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse -} - -// IsSuccess returns true when this list stage summaries o k response has a 2xx status code -func (o *ListStageSummariesOK) IsSuccess() bool { - return true -} - -// IsRedirect returns true when this list stage summaries o k response has a 3xx status code -func (o *ListStageSummariesOK) IsRedirect() bool { - return false -} - -// IsClientError returns true when this list stage summaries o k response has a 4xx status code -func (o *ListStageSummariesOK) IsClientError() bool { - return false -} - -// IsServerError returns true when this list stage summaries o k response has a 5xx status code -func (o *ListStageSummariesOK) IsServerError() bool { - return false -} - -// IsCode returns true when this list stage summaries o k response a status code equal to that given -func (o *ListStageSummariesOK) IsCode(code int) bool { - return code == 200 -} - -// Code gets the status code for the list stage summaries o k response -func (o *ListStageSummariesOK) Code() int { - return 200 -} - -func (o *ListStageSummariesOK) Error() string { - payload, _ := json.Marshal(o.Payload) - return fmt.Sprintf("[GET /v1beta1/projects/{project}/stage-summaries][%d] listStageSummariesOK %s", 200, payload) -} - -func (o *ListStageSummariesOK) String() string { - payload, _ := json.Marshal(o.Payload) - return fmt.Sprintf("[GET /v1beta1/projects/{project}/stage-summaries][%d] listStageSummariesOK %s", 200, payload) -} - -func (o *ListStageSummariesOK) GetPayload() *models.GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse { - return o.Payload -} - -func (o *ListStageSummariesOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - - o.Payload = new(models.GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) - - // response payload - if err := consumer.Consume(response.Body(), o.Payload); err != nil && !stderrors.Is(err, io.EOF) { - return err - } - - return nil -} diff --git a/pkg/client/generated/core/list_stages_parameters.go b/pkg/client/generated/core/list_stages_parameters.go index 8c83f517f9..b57780503b 100644 --- a/pkg/client/generated/core/list_stages_parameters.go +++ b/pkg/client/generated/core/list_stages_parameters.go @@ -71,6 +71,12 @@ type ListStagesParams struct { */ Project string + /* Summary. + + Strip heavy fields from each Stage + */ + Summary *bool + timeout time.Duration Context context.Context HTTPClient *http.Client @@ -146,6 +152,17 @@ func (o *ListStagesParams) SetProject(project string) { o.Project = project } +// WithSummary adds the summary to the list stages params +func (o *ListStagesParams) WithSummary(summary *bool) *ListStagesParams { + o.SetSummary(summary) + return o +} + +// SetSummary adds the summary to the list stages params +func (o *ListStagesParams) SetSummary(summary *bool) { + o.Summary = summary +} + // WriteToRequest writes these params to a swagger request func (o *ListStagesParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { @@ -170,6 +187,23 @@ func (o *ListStagesParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Re return err } + if o.Summary != nil { + + // query param summary + var qrSummary bool + + if o.Summary != nil { + qrSummary = *o.Summary + } + qSummary := swag.FormatBool(qrSummary) + if qSummary != "" { + + if err := r.SetQueryParam("summary", qSummary); err != nil { + return err + } + } + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } diff --git a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_list_stage_summaries_response.go b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_list_stage_summaries_response.go deleted file mode 100644 index 5d06ba9273..0000000000 --- a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_list_stage_summaries_response.go +++ /dev/null @@ -1,133 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package models - -import ( - "context" - stderrors "errors" - "strconv" - - "github.com/go-openapi/errors" - "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" -) - -// GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse github com akuity kargo api service v1alpha1 list stage summaries response -// -// swagger:model github_com_akuity_kargo_api_service_v1alpha1.ListStageSummariesResponse -type GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse struct { - - // resourceVersion is the Kubernetes ResourceVersion of the underlying - // StageList. Clients may pass this value to WatchStageSummaries to begin - // watching from the exact point this list was taken, receiving only - // subsequent changes without redundant initial events. - ResourceVersion string `json:"resource_version,omitempty"` - - // stageSummaries is the list of StageSummary objects found in the project. - StageSummaries []*GithubComAkuityKargoAPIServiceV1alpha1StageSummary `json:"stage_summaries"` -} - -// Validate validates this github com akuity kargo api service v1alpha1 list stage summaries response -func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateStageSummaries(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) validateStageSummaries(formats strfmt.Registry) error { - if swag.IsZero(m.StageSummaries) { // not required - return nil - } - - for i := 0; i < len(m.StageSummaries); i++ { - if swag.IsZero(m.StageSummaries[i]) { // not required - continue - } - - if m.StageSummaries[i] != nil { - if err := m.StageSummaries[i].Validate(formats); err != nil { - ve := new(errors.Validation) - if stderrors.As(err, &ve) { - return ve.ValidateName("stage_summaries" + "." + strconv.Itoa(i)) - } - ce := new(errors.CompositeError) - if stderrors.As(err, &ce) { - return ce.ValidateName("stage_summaries" + "." + strconv.Itoa(i)) - } - - return err - } - } - - } - - return nil -} - -// ContextValidate validate this github com akuity kargo api service v1alpha1 list stage summaries response based on the context it is used -func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - var res []error - - if err := m.contextValidateStageSummaries(ctx, formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) contextValidateStageSummaries(ctx context.Context, formats strfmt.Registry) error { - - for i := 0; i < len(m.StageSummaries); i++ { - - if m.StageSummaries[i] != nil { - - if swag.IsZero(m.StageSummaries[i]) { // not required - return nil - } - - if err := m.StageSummaries[i].ContextValidate(ctx, formats); err != nil { - ve := new(errors.Validation) - if stderrors.As(err, &ve) { - return ve.ValidateName("stage_summaries" + "." + strconv.Itoa(i)) - } - ce := new(errors.CompositeError) - if stderrors.As(err, &ce) { - return ce.ValidateName("stage_summaries" + "." + strconv.Itoa(i)) - } - - return err - } - } - - } - - return nil -} - -// MarshalBinary interface implementation -func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) MarshalBinary() ([]byte, error) { - if m == nil { - return nil, nil - } - return swag.WriteJSON(m) -} - -// UnmarshalBinary interface implementation -func (m *GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse) UnmarshalBinary(b []byte) error { - var res GithubComAkuityKargoAPIServiceV1alpha1ListStageSummariesResponse - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *m = res - return nil -} diff --git a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_spec_summary.go b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_spec_summary.go deleted file mode 100644 index c1c660de44..0000000000 --- a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_spec_summary.go +++ /dev/null @@ -1,141 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package models - -import ( - "context" - stderrors "errors" - "strconv" - - "github.com/go-openapi/errors" - "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" -) - -// GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary github com akuity kargo api service v1alpha1 stage spec summary -// -// swagger:model github_com_akuity_kargo_api_service_v1alpha1.StageSpecSummary -type GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary struct { - - // hasVerification indicates whether the Stage defines a Verification. - // Use GetStage to retrieve the full Verification configuration. - HasVerification bool `json:"has_verification,omitempty"` - - // promotionStepCount is the number of promotion steps defined in the - // Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. - // Use GetStage to retrieve the full step configuration. - PromotionStepCount int64 `json:"promotion_step_count,omitempty"` - - // requestedFreight mirrors StageSpec.requestedFreight. This is needed in - // full to render graph edges between Stages and their upstream sources. - RequestedFreight []*FreightRequest `json:"requested_freight"` - - // shard is the name of the shard that the Stage belongs to, mirroring - // StageSpec.shard. - Shard string `json:"shard,omitempty"` -} - -// Validate validates this github com akuity kargo api service v1alpha1 stage spec summary -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateRequestedFreight(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) validateRequestedFreight(formats strfmt.Registry) error { - if swag.IsZero(m.RequestedFreight) { // not required - return nil - } - - for i := 0; i < len(m.RequestedFreight); i++ { - if swag.IsZero(m.RequestedFreight[i]) { // not required - continue - } - - if m.RequestedFreight[i] != nil { - if err := m.RequestedFreight[i].Validate(formats); err != nil { - ve := new(errors.Validation) - if stderrors.As(err, &ve) { - return ve.ValidateName("requested_freight" + "." + strconv.Itoa(i)) - } - ce := new(errors.CompositeError) - if stderrors.As(err, &ce) { - return ce.ValidateName("requested_freight" + "." + strconv.Itoa(i)) - } - - return err - } - } - - } - - return nil -} - -// ContextValidate validate this github com akuity kargo api service v1alpha1 stage spec summary based on the context it is used -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - var res []error - - if err := m.contextValidateRequestedFreight(ctx, formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) contextValidateRequestedFreight(ctx context.Context, formats strfmt.Registry) error { - - for i := 0; i < len(m.RequestedFreight); i++ { - - if m.RequestedFreight[i] != nil { - - if swag.IsZero(m.RequestedFreight[i]) { // not required - return nil - } - - if err := m.RequestedFreight[i].ContextValidate(ctx, formats); err != nil { - ve := new(errors.Validation) - if stderrors.As(err, &ve) { - return ve.ValidateName("requested_freight" + "." + strconv.Itoa(i)) - } - ce := new(errors.CompositeError) - if stderrors.As(err, &ce) { - return ce.ValidateName("requested_freight" + "." + strconv.Itoa(i)) - } - - return err - } - } - - } - - return nil -} - -// MarshalBinary interface implementation -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) MarshalBinary() ([]byte, error) { - if m == nil { - return nil, nil - } - return swag.WriteJSON(m) -} - -// UnmarshalBinary interface implementation -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary) UnmarshalBinary(b []byte) error { - var res GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *m = res - return nil -} diff --git a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_status_summary.go b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_status_summary.go deleted file mode 100644 index 72188aa118..0000000000 --- a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_status_summary.go +++ /dev/null @@ -1,242 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package models - -import ( - "context" - stderrors "errors" - "strconv" - - "github.com/go-openapi/errors" - "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" -) - -// GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary github com akuity kargo api service v1alpha1 stage status summary -// -// swagger:model github_com_akuity_kargo_api_service_v1alpha1.StageStatusSummary -type GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary struct { - - // autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. - AutoPromotionEnabled bool `json:"auto_promotion_enabled,omitempty"` - - // conditions mirrors StageStatus.conditions. - Conditions []*V1Condition `json:"conditions"` - - // currentFreight is the FreightCollection currently deployed to the Stage - // (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has - // been deployed. Use GetStage to retrieve the full FreightHistory. - CurrentFreight struct { - FreightCollection - } `json:"current_freight,omitempty"` - - // currentPromotion mirrors StageStatus.currentPromotion. - CurrentPromotion struct { - PromotionReference - } `json:"current_promotion,omitempty"` - - // health mirrors StageStatus.health. - Health struct { - Health - } `json:"health,omitempty"` - - // lastHandledRefresh mirrors StageStatus.lastHandledRefresh. - LastHandledRefresh string `json:"last_handled_refresh,omitempty"` - - // lastPromotion mirrors StageStatus.lastPromotion. - LastPromotion struct { - PromotionReference - } `json:"last_promotion,omitempty"` - - // observedGeneration mirrors StageStatus.observedGeneration. - ObservedGeneration int64 `json:"observed_generation,omitempty"` -} - -// Validate validates this github com akuity kargo api service v1alpha1 stage status summary -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateConditions(formats); err != nil { - res = append(res, err) - } - - if err := m.validateCurrentFreight(formats); err != nil { - res = append(res, err) - } - - if err := m.validateCurrentPromotion(formats); err != nil { - res = append(res, err) - } - - if err := m.validateHealth(formats); err != nil { - res = append(res, err) - } - - if err := m.validateLastPromotion(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) validateConditions(formats strfmt.Registry) error { - if swag.IsZero(m.Conditions) { // not required - return nil - } - - for i := 0; i < len(m.Conditions); i++ { - if swag.IsZero(m.Conditions[i]) { // not required - continue - } - - if m.Conditions[i] != nil { - if err := m.Conditions[i].Validate(formats); err != nil { - ve := new(errors.Validation) - if stderrors.As(err, &ve) { - return ve.ValidateName("conditions" + "." + strconv.Itoa(i)) - } - ce := new(errors.CompositeError) - if stderrors.As(err, &ce) { - return ce.ValidateName("conditions" + "." + strconv.Itoa(i)) - } - - return err - } - } - - } - - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) validateCurrentFreight(formats strfmt.Registry) error { - if swag.IsZero(m.CurrentFreight) { // not required - return nil - } - - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) validateCurrentPromotion(formats strfmt.Registry) error { - if swag.IsZero(m.CurrentPromotion) { // not required - return nil - } - - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) validateHealth(formats strfmt.Registry) error { - if swag.IsZero(m.Health) { // not required - return nil - } - - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) validateLastPromotion(formats strfmt.Registry) error { - if swag.IsZero(m.LastPromotion) { // not required - return nil - } - - return nil -} - -// ContextValidate validate this github com akuity kargo api service v1alpha1 stage status summary based on the context it is used -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - var res []error - - if err := m.contextValidateConditions(ctx, formats); err != nil { - res = append(res, err) - } - - if err := m.contextValidateCurrentFreight(ctx, formats); err != nil { - res = append(res, err) - } - - if err := m.contextValidateCurrentPromotion(ctx, formats); err != nil { - res = append(res, err) - } - - if err := m.contextValidateHealth(ctx, formats); err != nil { - res = append(res, err) - } - - if err := m.contextValidateLastPromotion(ctx, formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) contextValidateConditions(ctx context.Context, formats strfmt.Registry) error { - - for i := 0; i < len(m.Conditions); i++ { - - if m.Conditions[i] != nil { - - if swag.IsZero(m.Conditions[i]) { // not required - return nil - } - - if err := m.Conditions[i].ContextValidate(ctx, formats); err != nil { - ve := new(errors.Validation) - if stderrors.As(err, &ve) { - return ve.ValidateName("conditions" + "." + strconv.Itoa(i)) - } - ce := new(errors.CompositeError) - if stderrors.As(err, &ce) { - return ce.ValidateName("conditions" + "." + strconv.Itoa(i)) - } - - return err - } - } - - } - - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) contextValidateCurrentFreight(ctx context.Context, formats strfmt.Registry) error { - - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) contextValidateCurrentPromotion(ctx context.Context, formats strfmt.Registry) error { - - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) contextValidateHealth(ctx context.Context, formats strfmt.Registry) error { - - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) contextValidateLastPromotion(ctx context.Context, formats strfmt.Registry) error { - - return nil -} - -// MarshalBinary interface implementation -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) MarshalBinary() ([]byte, error) { - if m == nil { - return nil, nil - } - return swag.WriteJSON(m) -} - -// UnmarshalBinary interface implementation -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary) UnmarshalBinary(b []byte) error { - var res GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *m = res - return nil -} diff --git a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_summary.go b/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_summary.go deleted file mode 100644 index 72fc952c77..0000000000 --- a/pkg/client/generated/models/github_com_akuity_kargo_api_service_v1alpha1_stage_summary.go +++ /dev/null @@ -1,133 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package models - -import ( - "context" - - "github.com/go-openapi/errors" - "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" -) - -// GithubComAkuityKargoAPIServiceV1alpha1StageSummary github com akuity kargo api service v1alpha1 stage summary -// -// swagger:model github_com_akuity_kargo_api_service_v1alpha1.StageSummary -type GithubComAkuityKargoAPIServiceV1alpha1StageSummary struct { - - // metadata contains the Stage's identity and Kubernetes object metadata. - Metadata struct { - V1ObjectMeta - } `json:"metadata,omitempty"` - - // spec contains the subset of StageSpec fields needed by list/graph views. - Spec struct { - GithubComAkuityKargoAPIServiceV1alpha1StageSpecSummary - } `json:"spec,omitempty"` - - // status contains the subset of StageStatus fields needed by list/graph views. - Status struct { - GithubComAkuityKargoAPIServiceV1alpha1StageStatusSummary - } `json:"status,omitempty"` -} - -// Validate validates this github com akuity kargo api service v1alpha1 stage summary -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateMetadata(formats); err != nil { - res = append(res, err) - } - - if err := m.validateSpec(formats); err != nil { - res = append(res, err) - } - - if err := m.validateStatus(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) validateMetadata(formats strfmt.Registry) error { - if swag.IsZero(m.Metadata) { // not required - return nil - } - - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) validateSpec(formats strfmt.Registry) error { - if swag.IsZero(m.Spec) { // not required - return nil - } - - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) validateStatus(formats strfmt.Registry) error { - if swag.IsZero(m.Status) { // not required - return nil - } - - return nil -} - -// ContextValidate validate this github com akuity kargo api service v1alpha1 stage summary based on the context it is used -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - var res []error - - if err := m.contextValidateMetadata(ctx, formats); err != nil { - res = append(res, err) - } - - if err := m.contextValidateSpec(ctx, formats); err != nil { - res = append(res, err) - } - - if err := m.contextValidateStatus(ctx, formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) contextValidateMetadata(ctx context.Context, formats strfmt.Registry) error { - - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) contextValidateSpec(ctx context.Context, formats strfmt.Registry) error { - - return nil -} - -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) contextValidateStatus(ctx context.Context, formats strfmt.Registry) error { - - return nil -} - -// MarshalBinary interface implementation -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) MarshalBinary() ([]byte, error) { - if m == nil { - return nil, nil - } - return swag.WriteJSON(m) -} - -// UnmarshalBinary interface implementation -func (m *GithubComAkuityKargoAPIServiceV1alpha1StageSummary) UnmarshalBinary(b []byte) error { - var res GithubComAkuityKargoAPIServiceV1alpha1StageSummary - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *m = res - return nil -} diff --git a/pkg/server/get_stage_health_outputs_v1alpha1.go b/pkg/server/get_stage_health_outputs_v1alpha1.go index eb02e0e13f..3bffd4b71e 100644 --- a/pkg/server/get_stage_health_outputs_v1alpha1.go +++ b/pkg/server/get_stage_health_outputs_v1alpha1.go @@ -22,7 +22,7 @@ const maxStageHealthOutputsBatch = 1000 // GetStageHealthOutputs returns the raw health output blob for the specified // Stages in a project. Stages that do not exist or have no health output // recorded are omitted from the response map. Intended for clients that use -// ListStageSummaries for the list and lazily resolve per-argocd-app health +// ListStages with summary=true for the list and lazily resolve per-argocd-app health // for Stages currently in viewport. func (s *server) GetStageHealthOutputs( ctx context.Context, @@ -78,7 +78,7 @@ func (s *server) GetStageHealthOutputs( // @Description Return the raw health output blob for the specified Stages // @Description in a project. Stages that do not exist or have no recorded // @Description health output are omitted from the response. Intended for -// @Description clients that use ListStageSummaries (which omits the output +// @Description clients that use ListStages with summary=true (which omits the output // @Description blob) and need to lazily resolve health for Stages currently // @Description in viewport. // @Tags Core, Project-Level diff --git a/pkg/server/list_stage_summaries_v1alpha1.go b/pkg/server/list_stage_summaries_v1alpha1.go deleted file mode 100644 index 43de12f2c9..0000000000 --- a/pkg/server/list_stage_summaries_v1alpha1.go +++ /dev/null @@ -1,201 +0,0 @@ -package server - -import ( - "context" - "fmt" - "net/http" - "slices" - "strings" - "time" - - "connectrpc.com/connect" - "github.com/gin-gonic/gin" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "sigs.k8s.io/controller-runtime/pkg/client" - - svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" - kargoapi "github.com/akuity/kargo/api/v1alpha1" - "github.com/akuity/kargo/pkg/logging" -) - -// ListStageSummaries returns a lightweight projection of the Stages in the -// given project. When the request's FreightOrigins field is non-empty, only -// Stages that subscribe to Freight from at least one of the named Warehouses -// are returned. -func (s *server) ListStageSummaries( - ctx context.Context, - req *connect.Request[svcv1alpha1.ListStageSummariesRequest], -) (*connect.Response[svcv1alpha1.ListStageSummariesResponse], error) { - project := req.Msg.GetProject() - if err := validateFieldNotEmpty("project", project); err != nil { - return nil, err - } - - if err := s.validateProjectExists(ctx, project); err != nil { - return nil, err - } - - var list kargoapi.StageList - if err := s.client.List(ctx, &list, client.InNamespace(project)); err != nil { - return nil, fmt.Errorf("list stages: %w", err) - } - - filtered := filterStagesByWarehouses(list.Items, req.Msg.GetFreightOrigins()) - - slices.SortFunc(filtered, func(a, b kargoapi.Stage) int { - return strings.Compare(a.Name, b.Name) - }) - - summaries := make([]*svcv1alpha1.StageSummary, len(filtered)) - for i := range filtered { - summaries[i] = stageToSummary(&filtered[i]) - } - - return connect.NewResponse(&svcv1alpha1.ListStageSummariesResponse{ - StageSummaries: summaries, - ResourceVersion: list.ResourceVersion, - }), nil -} - -// filterStagesByWarehouses returns the subset of stages that request Freight -// from at least one of the named Warehouses. Empty strings in warehouseNames -// are ignored — a slice of only empty strings is treated as no filter. -// Matching is delegated to stageMatchesAnyWarehouse (defined in -// list_stages_v1alpha1.go) so list, watch, and summary endpoints stay in -// lockstep. -func filterStagesByWarehouses( - stages []kargoapi.Stage, - warehouseNames []string, -) []kargoapi.Stage { - names := nonEmptyStrings(warehouseNames) - if len(names) == 0 { - return stages - } - out := stages[:0:0] - for i := range stages { - if stageMatchesAnyWarehouse(&stages[i], names) { - out = append(out, stages[i]) - } - } - return out -} - -// nonEmptyStrings returns s with empty strings removed. Returns nil if the -// input contains no non-empty elements. -func nonEmptyStrings(s []string) []string { - out := make([]string, 0, len(s)) - for _, v := range s { - if v != "" { - out = append(out, v) - } - } - if len(out) == 0 { - return nil - } - return out -} - -// @id ListStageSummaries -// @Summary List Stage Summaries -// @Description List a lightweight projection of Stage resources from a -// @Description project's namespace. Intended for UI list and graph views that -// @Description need metadata and current state for many Stages at once but do -// @Description not need full FreightHistory, PromotionTemplate steps, or -// @Description Verification configuration. Use GetStage for detail fields. -// @Tags Core, Project-Level -// @Security BearerAuth -// @Produce json -// @Param project path string true "Project name" -// @Param freightOrigins query []string false "Warehouse name(s) to filter by" collectionFormat(multi) -// @Success 200 {object} svcv1alpha1.ListStageSummariesResponse -// @Router /v1beta1/projects/{project}/stage-summaries [get] -func (s *server) listStageSummaries(c *gin.Context) { - ctx := c.Request.Context() - project := c.Param("project") - - if watchMode := c.Query("watch") == trueStr; watchMode { - s.watchStageSummaries(c, project) - return - } - - freightOrigins := c.QueryArray("freightOrigins") - - list := &kargoapi.StageList{} - if err := s.client.List(ctx, list, client.InNamespace(project)); err != nil { - _ = c.Error(err) - return - } - - filtered := filterStagesByWarehouses(list.Items, freightOrigins) - - slices.SortFunc(filtered, func(a, b kargoapi.Stage) int { - return strings.Compare(a.Name, b.Name) - }) - - summaries := make([]*svcv1alpha1.StageSummary, len(filtered)) - for i := range filtered { - summaries[i] = stageToSummary(&filtered[i]) - } - - c.JSON(http.StatusOK, &svcv1alpha1.ListStageSummariesResponse{ - StageSummaries: summaries, - ResourceVersion: list.ResourceVersion, - }) -} - -func (s *server) watchStageSummaries(c *gin.Context, project string) { - ctx := c.Request.Context() - logger := logging.LoggerFromContext(ctx) - - freightOrigins := c.QueryArray("freightOrigins") - - opts := []client.ListOption{client.InNamespace(project)} - if rv := c.Query("resourceVersion"); rv != "" { - opts = append(opts, &client.ListOptions{ - Raw: &metav1.ListOptions{ResourceVersion: rv}, - }) - } - - w, err := s.client.Watch(ctx, &kargoapi.StageList{}, opts...) - if err != nil { - logger.Error(err, "failed to start watch") - _ = c.Error(fmt.Errorf("watch stage summaries: %w", err)) - return - } - defer w.Stop() - - keepaliveTicker := time.NewTicker(30 * time.Second) - defer keepaliveTicker.Stop() - - setSSEHeaders(c) - - for { - select { - case <-ctx.Done(): - logger.Debug("watch context done", "error", ctx.Err()) - return - - case <-keepaliveTicker.C: - if !writeSSEKeepalive(c) { - return - } - - case e, ok := <-w.ResultChan(): - if !ok { - logger.Debug("watch channel closed") - return - } - stage, ok := convertWatchEventObject(c, e, (*kargoapi.Stage)(nil)) - if !ok { - continue - } - if len(freightOrigins) > 0 && - !stageMatchesAnyWarehouse(stage, freightOrigins) { - continue - } - if !sendSSEWatchEvent(c, e.Type, stageToSummary(stage)) { - return - } - } - } -} diff --git a/pkg/server/list_stage_summaries_v1alpha1_test.go b/pkg/server/list_stage_summaries_v1alpha1_test.go deleted file mode 100644 index b746d4bd35..0000000000 --- a/pkg/server/list_stage_summaries_v1alpha1_test.go +++ /dev/null @@ -1,262 +0,0 @@ -package server - -import ( - "context" - "encoding/json" - "net/http" - "net/http/httptest" - "testing" - - "connectrpc.com/connect" - "github.com/stretchr/testify/require" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/client-go/rest" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/client/fake" - - svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" - kargoapi "github.com/akuity/kargo/api/v1alpha1" - "github.com/akuity/kargo/pkg/server/config" - "github.com/akuity/kargo/pkg/server/kubernetes" - "github.com/akuity/kargo/pkg/server/validation" -) - -func TestListStageSummaries(t *testing.T) { - const projectName = "kargo-demo" - - newStage := func(name, warehouseName string) *kargoapi.Stage { - return &kargoapi.Stage{ - ObjectMeta: metav1.ObjectMeta{Namespace: projectName, Name: name}, - Spec: kargoapi.StageSpec{ - RequestedFreight: []kargoapi.FreightRequest{{ - Origin: kargoapi.FreightOrigin{Kind: kargoapi.FreightOriginKindWarehouse, Name: warehouseName}, - Sources: kargoapi.FreightSources{Direct: true}, - }}, - }, - } - } - - testCases := map[string]struct { - req *svcv1alpha1.ListStageSummariesRequest - assert func(*testing.T, *connect.Response[svcv1alpha1.ListStageSummariesResponse], error) - }{ - "empty project": { - req: &svcv1alpha1.ListStageSummariesRequest{Project: ""}, - assert: func(t *testing.T, _ *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { - require.Error(t, err) - require.Equal(t, connect.CodeInvalidArgument, connect.CodeOf(err)) - }, - }, - "non-existing project": { - req: &svcv1alpha1.ListStageSummariesRequest{Project: "does-not-exist"}, - assert: func(t *testing.T, _ *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { - require.Error(t, err) - require.Equal(t, connect.CodeNotFound, connect.CodeOf(err)) - }, - }, - "no filter returns all stages sorted by name": { - req: &svcv1alpha1.ListStageSummariesRequest{Project: projectName}, - assert: func(t *testing.T, res *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { - require.NoError(t, err) - summaries := res.Msg.GetStageSummaries() - require.Len(t, summaries, 3) - require.Equal(t, "a-dev", summaries[0].Metadata.Name) - require.Equal(t, "b-qa", summaries[1].Metadata.Name) - require.Equal(t, "c-prod", summaries[2].Metadata.Name) - }, - }, - "single warehouse filter": { - req: &svcv1alpha1.ListStageSummariesRequest{ - Project: projectName, - FreightOrigins: []string{"wh-a"}, - }, - assert: func(t *testing.T, res *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { - require.NoError(t, err) - summaries := res.Msg.GetStageSummaries() - require.Len(t, summaries, 2) - names := []string{summaries[0].Metadata.Name, summaries[1].Metadata.Name} - require.ElementsMatch(t, []string{"a-dev", "b-qa"}, names) - }, - }, - "multiple warehouse filter": { - req: &svcv1alpha1.ListStageSummariesRequest{ - Project: projectName, - FreightOrigins: []string{"wh-a", "wh-b"}, - }, - assert: func(t *testing.T, res *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { - require.NoError(t, err) - require.Len(t, res.Msg.GetStageSummaries(), 3) - }, - }, - "unknown warehouse returns empty": { - req: &svcv1alpha1.ListStageSummariesRequest{ - Project: projectName, - FreightOrigins: []string{"wh-nonexistent"}, - }, - assert: func(t *testing.T, res *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { - require.NoError(t, err) - require.Empty(t, res.Msg.GetStageSummaries()) - }, - }, - "empty filter strings are ignored": { - req: &svcv1alpha1.ListStageSummariesRequest{ - Project: projectName, - FreightOrigins: []string{"", ""}, - }, - assert: func(t *testing.T, res *connect.Response[svcv1alpha1.ListStageSummariesResponse], err error) { - require.NoError(t, err) - // all empty → treated as no filter → return all - require.Len(t, res.Msg.GetStageSummaries(), 3) - }, - }, - } - - for name, tc := range testCases { - t.Run(name, func(t *testing.T) { - t.Parallel() - ctx := t.Context() - kubeClient, err := kubernetes.NewClient( - ctx, - &rest.Config{}, - kubernetes.ClientOptions{ - SkipAuthorization: true, - NewInternalClient: func( - context.Context, *rest.Config, *runtime.Scheme, - ) (client.WithWatch, error) { - return fake.NewClientBuilder(). - WithScheme(mustNewScheme()). - WithObjects( - &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{ - Name: projectName, - Labels: map[string]string{kargoapi.LabelKeyProject: kargoapi.LabelValueTrue}, - }}, - &kargoapi.Project{ObjectMeta: metav1.ObjectMeta{Name: projectName}}, - ). - WithLists(&kargoapi.StageList{Items: []kargoapi.Stage{ - *newStage("a-dev", "wh-a"), - *newStage("b-qa", "wh-a"), - *newStage("c-prod", "wh-b"), - }}). - Build(), nil - }, - }, - ) - require.NoError(t, err) - - svr := &server{client: kubeClient} - svr.externalValidateProjectFn = validation.ValidateProject - - res, err := svr.ListStageSummaries(ctx, connect.NewRequest(tc.req)) - tc.assert(t, res, err) - }) - } -} - -func Test_server_listStageSummaries(t *testing.T) { - testProject := &kargoapi.Project{ObjectMeta: metav1.ObjectMeta{Name: "fake-project"}} - - newStage := func(name, warehouseName string) *kargoapi.Stage { - return &kargoapi.Stage{ - ObjectMeta: metav1.ObjectMeta{Namespace: testProject.Name, Name: name}, - Spec: kargoapi.StageSpec{ - RequestedFreight: []kargoapi.FreightRequest{{ - Origin: kargoapi.FreightOrigin{Kind: kargoapi.FreightOriginKindWarehouse, Name: warehouseName}, - Sources: kargoapi.FreightSources{Direct: true}, - }}, - }, - } - } - - testRESTEndpoint( - t, &config.ServerConfig{}, - http.MethodGet, "/v1beta1/projects/"+testProject.Name+"/stage-summaries", - []restTestCase{ - { - name: "project does not exist", - assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { - require.Equal(t, http.StatusNotFound, w.Code) - }, - }, - { - name: "no stages exist", - clientBuilder: fake.NewClientBuilder().WithObjects(testProject), - assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { - require.Equal(t, http.StatusOK, w.Code) - resp := &svcv1alpha1.ListStageSummariesResponse{} - require.NoError(t, json.Unmarshal(w.Body.Bytes(), resp)) - require.Empty(t, resp.GetStageSummaries()) - }, - }, - { - name: "lists stage summaries, sorted by name", - clientBuilder: fake.NewClientBuilder().WithObjects( - testProject, - newStage("b-qa", "wh-a"), - newStage("a-dev", "wh-a"), - ), - assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { - require.Equal(t, http.StatusOK, w.Code) - resp := &svcv1alpha1.ListStageSummariesResponse{} - require.NoError(t, json.Unmarshal(w.Body.Bytes(), resp)) - require.Len(t, resp.GetStageSummaries(), 2) - require.Equal(t, "a-dev", resp.GetStageSummaries()[0].Metadata.Name) - require.Equal(t, "b-qa", resp.GetStageSummaries()[1].Metadata.Name) - }, - }, - { - name: "applies freightOrigins filter", - url: "/v1beta1/projects/" + testProject.Name + "/stage-summaries?freightOrigins=wh-a", - clientBuilder: fake.NewClientBuilder().WithObjects( - testProject, - newStage("a-dev", "wh-a"), - newStage("c-prod", "wh-b"), - ), - assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { - require.Equal(t, http.StatusOK, w.Code) - resp := &svcv1alpha1.ListStageSummariesResponse{} - require.NoError(t, json.Unmarshal(w.Body.Bytes(), resp)) - require.Len(t, resp.GetStageSummaries(), 1) - require.Equal(t, "a-dev", resp.GetStageSummaries()[0].Metadata.Name) - }, - }, - }, - ) -} - -func Test_server_listStageSummaries_watch(t *testing.T) { - const projectName = "fake-project" - - testRESTWatchEndpoint( - t, &config.ServerConfig{}, - "/v1beta1/projects/"+projectName+"/stage-summaries?watch=true", - []restWatchTestCase{ - { - name: "project not found", - url: "/v1beta1/projects/non-existent/stage-summaries?watch=true", - clientBuilder: fake.NewClientBuilder(), - assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { - require.Equal(t, http.StatusNotFound, w.Code) - }, - }, - { - name: "streams events as SSE", - clientBuilder: fake.NewClientBuilder().WithObjects( - &kargoapi.Project{ObjectMeta: metav1.ObjectMeta{Name: projectName}}, - &kargoapi.Stage{ObjectMeta: metav1.ObjectMeta{Namespace: projectName, Name: "a"}}, - ), - operations: func(ctx context.Context, c client.Client) { - _ = c.Create(ctx, &kargoapi.Stage{ - ObjectMeta: metav1.ObjectMeta{Namespace: projectName, Name: "b"}, - }) - }, - assertions: func(t *testing.T, w *httptest.ResponseRecorder, _ client.Client) { - require.Equal(t, http.StatusOK, w.Code) - require.Equal(t, "text/event-stream", w.Header().Get("Content-Type")) - require.Contains(t, w.Body.String(), "data:") - }, - }, - }, - ) -} diff --git a/pkg/server/list_stages_v1alpha1.go b/pkg/server/list_stages_v1alpha1.go index 6bac4a094f..172e412062 100644 --- a/pkg/server/list_stages_v1alpha1.go +++ b/pkg/server/list_stages_v1alpha1.go @@ -32,7 +32,7 @@ func (s *server) ListStages( warehouses := req.Msg.GetFreightOrigins() - items, err := s.listStagesByWarehouses(ctx, project, warehouses) + items, rv, err := s.listStagesByWarehouses(ctx, project, warehouses) if err != nil { return nil, fmt.Errorf("list stages: %w", err) } @@ -41,46 +41,93 @@ func (s *server) ListStages( return strings.Compare(a.Name, b.Name) }) + summary := req.Msg.GetSummary() stages := make([]*kargoapi.Stage, len(items)) for idx := range items { + if summary { + stripStageForSummary(&items[idx]) + } stages[idx] = &items[idx] } return connect.NewResponse(&svcv1alpha1.ListStagesResponse{ - Stages: stages, + Stages: stages, + ResourceVersion: rv, }), nil } +// stripStageForSummary mutates the Stage in place, clearing the heavy +// payload fields that list and graph views do not need. The surviving +// shape still preserves has-verification and promotion-step-count +// information (via stage.Spec.Verification != nil and +// len(stage.Spec.PromotionTemplate.Spec.Steps)), so callers do not have +// to refetch via GetStage for those bits. +// +// Stripped fields: +// - status.freightHistory truncated to the current element (index 0) +// - spec.promotionTemplate.spec.steps[*].config cleared (kind/as/name kept) +// - status.health.output cleared (use GetStageHealthOutputs for lazy fetch) +func stripStageForSummary(stage *kargoapi.Stage) { + if stage == nil { + return + } + if len(stage.Status.FreightHistory) > 1 { + stage.Status.FreightHistory = stage.Status.FreightHistory[:1] + } + if stage.Spec.PromotionTemplate != nil { + for i := range stage.Spec.PromotionTemplate.Spec.Steps { + stage.Spec.PromotionTemplate.Spec.Steps[i].Config = nil + } + } + if stage.Status.Health != nil { + stage.Status.Health.Output = nil + } +} + // @id ListStages // @Summary List Stages // @Description List Stage resources from a project's namespace. Returns a -// @Description StageList resource. +// @Description StageList resource. Pass summary=true to receive a lightweight +// @Description projection for list and graph views. // @Tags Core, Project-Level // @Security BearerAuth // @Produce json // @Param project path string true "Project name" // @Param freightOrigins query []string false "Warehouse names to filter Stages by" +// @Param summary query bool false "Strip heavy fields from each Stage" // @Success 200 {object} kargoapi.StageList "StageList custom resource (github.com/akuity/kargo/api/v1alpha1.StageList)" // @Router /v1beta1/projects/{project}/stages [get] func (s *server) listStages(c *gin.Context) { ctx := c.Request.Context() project := c.Param("project") warehouses := c.QueryArray("freightOrigins") + summary := c.Query("summary") == trueStr if watchMode := c.Query("watch") == trueStr; watchMode { - s.watchStages(c, project, warehouses) + s.watchStages(c, project, warehouses, summary) return } - items, err := s.listStagesByWarehouses(ctx, project, warehouses) + items, _, err := s.listStagesByWarehouses(ctx, project, warehouses) if err != nil { _ = c.Error(err) return } + if summary { + for i := range items { + stripStageForSummary(&items[i]) + } + } + c.JSON(http.StatusOK, &kargoapi.StageList{Items: items}) } -func (s *server) watchStages(c *gin.Context, project string, warehouses []string) { +func (s *server) watchStages( + c *gin.Context, + project string, + warehouses []string, + summary bool, +) { ctx := c.Request.Context() logger := logging.LoggerFromContext(ctx) @@ -123,6 +170,10 @@ func (s *server) watchStages(c *gin.Context, project string, warehouses []string continue } + if summary { + stripStageForSummary(stage) + } + if !sendSSEWatchEvent(c, e.Type, stage) { return } @@ -133,18 +184,20 @@ func (s *server) watchStages(c *gin.Context, project string, warehouses []string // listStagesByWarehouses lists Stages in the given project, optionally // filtered to those that request Freight from at least one of the specified // warehouses (directly or through upstream stages). When warehouses is empty, -// all Stages are returned. +// all Stages are returned. The underlying StageList's ResourceVersion is +// returned alongside so callers can pass it to a subsequent WatchStages call +// for list-then-watch semantics. func (s *server) listStagesByWarehouses( ctx context.Context, project string, warehouses []string, -) ([]kargoapi.Stage, error) { +) ([]kargoapi.Stage, string, error) { var list kargoapi.StageList if err := s.client.List(ctx, &list, client.InNamespace(project)); err != nil { - return nil, err + return nil, "", err } if len(warehouses) == 0 { - return list.Items, nil + return list.Items, list.ResourceVersion, nil } var stages []kargoapi.Stage for _, stage := range list.Items { @@ -152,7 +205,7 @@ func (s *server) listStagesByWarehouses( stages = append(stages, stage) } } - return stages, nil + return stages, list.ResourceVersion, nil } // stageMatchesAnyWarehouse returns true if the Stage requests Freight that diff --git a/pkg/server/rest_router.go b/pkg/server/rest_router.go index dcee54e431..54ea0fac25 100644 --- a/pkg/server/rest_router.go +++ b/pkg/server/rest_router.go @@ -190,7 +190,6 @@ func (s *server) setupRESTRouter(ctx context.Context) *gin.Engine { // Stages project.GET("/stages", s.listStages) - project.GET("/stage-summaries", s.listStageSummaries) project.GET("/stage-health-outputs", s.getStageHealthOutputs) project.GET("/stages/:stage", s.getStage) project.POST("/stages/:stage/refresh", s.refreshStage) diff --git a/pkg/server/stage_to_summary.go b/pkg/server/stage_to_summary.go deleted file mode 100644 index e986ed51d7..0000000000 --- a/pkg/server/stage_to_summary.go +++ /dev/null @@ -1,100 +0,0 @@ -package server - -import ( - "math" - - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - - svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" - kargoapi "github.com/akuity/kargo/api/v1alpha1" -) - -// stageToSummary converts a Stage to the lightweight StageSummary projection -// returned by ListStageSummaries and WatchStageSummaries. See the StageSummary -// proto definition for the rationale. Returns nil if stage is nil. -// -// The returned summary's Status.Health.Output is always nil even when the -// source Stage has a populated output. That raw blob (the argocd-shaped -// health output) is routinely ~2 KB per Stage and dominates the per-stage -// cost of the summary. Clients that need it should call -// GetStageHealthOutputs for the subset of Stages currently in viewport. -func stageToSummary(stage *kargoapi.Stage) *svcv1alpha1.StageSummary { - if stage == nil { - return nil - } - - meta := stage.ObjectMeta.DeepCopy() - - summary := &svcv1alpha1.StageSummary{ - Metadata: meta, - Spec: &svcv1alpha1.StageSpecSummary{ - Shard: stage.Spec.Shard, - RequestedFreight: cloneFreightRequests(stage.Spec.RequestedFreight), - HasVerification: stage.Spec.Verification != nil, - }, - Status: &svcv1alpha1.StageStatusSummary{ - Conditions: cloneConditions(stage.Status.Conditions), - LastHandledRefresh: stage.Status.LastHandledRefresh, - CurrentPromotion: stage.Status.CurrentPromotion.DeepCopy(), - LastPromotion: stage.Status.LastPromotion.DeepCopy(), - Health: healthWithoutOutput(stage.Status.Health), - ObservedGeneration: stage.Status.ObservedGeneration, - AutoPromotionEnabled: stage.Status.AutoPromotionEnabled, - }, - } - - if stage.Spec.PromotionTemplate != nil { - n := len(stage.Spec.PromotionTemplate.Spec.Steps) - if n > int(math.MaxInt32) { - n = int(math.MaxInt32) - } - summary.Spec.PromotionStepCount = int32(n) - } - - if len(stage.Status.FreightHistory) > 0 { - summary.Status.CurrentFreight = stage.Status.FreightHistory[0].DeepCopy() - } - - return summary -} - -// cloneFreightRequests returns a deep copy of the given FreightRequests as a -// slice of pointers (matching the shape of the generated protobuf field). -func cloneFreightRequests(src []kargoapi.FreightRequest) []*kargoapi.FreightRequest { - if len(src) == 0 { - return nil - } - dst := make([]*kargoapi.FreightRequest, len(src)) - for i := range src { - dst[i] = src[i].DeepCopy() - } - return dst -} - -// healthWithoutOutput returns a deep copy of the given Health with the -// Output field cleared. Returns nil if src is nil. See stageToSummary for -// the motivation. -func healthWithoutOutput(src *kargoapi.Health) *kargoapi.Health { - if src == nil { - return nil - } - h := src.DeepCopy() - h.Output = nil - return h -} - -// cloneConditions returns a deep copy of the given Conditions as a slice of -// pointers (matching the shape of the generated protobuf field). Each -// metav1.Condition contains only primitive fields, so a shallow per-element -// copy is sufficient. -func cloneConditions(src []metav1.Condition) []*metav1.Condition { - if len(src) == 0 { - return nil - } - dst := make([]*metav1.Condition, len(src)) - for i := range src { - c := src[i] - dst[i] = &c - } - return dst -} diff --git a/pkg/server/stage_to_summary_test.go b/pkg/server/stage_to_summary_test.go deleted file mode 100644 index 52a2bfeb71..0000000000 --- a/pkg/server/stage_to_summary_test.go +++ /dev/null @@ -1,204 +0,0 @@ -package server - -import ( - "testing" - - "github.com/stretchr/testify/require" - apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - - kargoapi "github.com/akuity/kargo/api/v1alpha1" -) - -func TestStageToSummary(t *testing.T) { - t.Run("nil stage returns nil", func(t *testing.T) { - t.Parallel() - require.Nil(t, stageToSummary(nil)) - }) - - t.Run("minimal stage preserves identity and zero-valued fields", func(t *testing.T) { - t.Parallel() - s := &kargoapi.Stage{ - ObjectMeta: metav1.ObjectMeta{Name: "dev", Namespace: "proj"}, - } - got := stageToSummary(s) - require.NotNil(t, got) - require.NotNil(t, got.Metadata) - require.Equal(t, "dev", got.Metadata.Name) - require.Equal(t, "proj", got.Metadata.Namespace) - require.NotNil(t, got.Spec) - require.Empty(t, got.Spec.Shard) - require.Empty(t, got.Spec.RequestedFreight) - require.Zero(t, got.Spec.PromotionStepCount) - require.False(t, got.Spec.HasVerification) - require.NotNil(t, got.Status) - require.Empty(t, got.Status.Conditions) - require.Nil(t, got.Status.CurrentFreight) - require.Nil(t, got.Status.CurrentPromotion) - require.Nil(t, got.Status.LastPromotion) - require.Nil(t, got.Status.Health) - require.Zero(t, got.Status.ObservedGeneration) - require.False(t, got.Status.AutoPromotionEnabled) - }) - - t.Run("fully populated stage projects every summary field", func(t *testing.T) { - t.Parallel() - health := &kargoapi.Health{Status: kargoapi.HealthStateHealthy} - currentPromo := &kargoapi.PromotionReference{Name: "promo-current"} - lastPromo := &kargoapi.PromotionReference{Name: "promo-last"} - - s := &kargoapi.Stage{ - ObjectMeta: metav1.ObjectMeta{ - Name: "qa", - Namespace: "proj", - UID: "uid-1", - Labels: map[string]string{"kargo.akuity.io/shard": "east"}, - Annotations: map[string]string{"kargo.akuity.io/description": "QA"}, - }, - Spec: kargoapi.StageSpec{ - Shard: "east", - RequestedFreight: []kargoapi.FreightRequest{{ - Origin: kargoapi.FreightOrigin{Kind: kargoapi.FreightOriginKindWarehouse, Name: "wh-1"}, - Sources: kargoapi.FreightSources{Direct: true}, - }}, - PromotionTemplate: &kargoapi.PromotionTemplate{ - Spec: kargoapi.PromotionTemplateSpec{ - Steps: []kargoapi.PromotionStep{{}, {}, {}}, - }, - }, - Verification: &kargoapi.Verification{}, - }, - Status: kargoapi.StageStatus{ - Conditions: []metav1.Condition{{ - Type: "Ready", - Status: metav1.ConditionTrue, - Reason: "Healthy", - Message: "all good", - }}, - LastHandledRefresh: "refresh-token-1", - FreightHistory: kargoapi.FreightHistory{ - {ID: "fc-current"}, - {ID: "fc-older"}, - }, - CurrentPromotion: currentPromo, - LastPromotion: lastPromo, - Health: health, - ObservedGeneration: 7, - AutoPromotionEnabled: true, - // Fields that must NOT appear in the summary: - FreightSummary: "human-readable summary", - }, - } - - got := stageToSummary(s) - require.NotNil(t, got) - - // Metadata - require.Equal(t, "qa", got.Metadata.Name) - require.Equal(t, "proj", got.Metadata.Namespace) - require.Equal(t, "east", got.Metadata.Labels["kargo.akuity.io/shard"]) - require.Equal(t, "QA", got.Metadata.Annotations["kargo.akuity.io/description"]) - - // Spec summary - require.Equal(t, "east", got.Spec.Shard) - require.Len(t, got.Spec.RequestedFreight, 1) - require.Equal(t, "wh-1", got.Spec.RequestedFreight[0].Origin.Name) - require.Equal(t, int32(3), got.Spec.PromotionStepCount) - require.True(t, got.Spec.HasVerification) - - // Status summary - require.Len(t, got.Status.Conditions, 1) - require.Equal(t, "Ready", got.Status.Conditions[0].Type) - require.Equal(t, "refresh-token-1", got.Status.LastHandledRefresh) - require.NotNil(t, got.Status.CurrentFreight) - require.Equal(t, "fc-current", got.Status.CurrentFreight.ID) - require.Equal(t, "promo-current", got.Status.CurrentPromotion.Name) - require.Equal(t, "promo-last", got.Status.LastPromotion.Name) - require.Equal(t, kargoapi.HealthStateHealthy, got.Status.Health.Status) - require.Equal(t, int64(7), got.Status.ObservedGeneration) - require.True(t, got.Status.AutoPromotionEnabled) - }) - - t.Run("health output is stripped while status is preserved", func(t *testing.T) { - t.Parallel() - s := &kargoapi.Stage{ - ObjectMeta: metav1.ObjectMeta{Name: "s"}, - Status: kargoapi.StageStatus{ - Health: &kargoapi.Health{ - Status: kargoapi.HealthStateHealthy, - Issues: []string{"transient blip"}, - Output: &apiextensionsv1.JSON{ - Raw: []byte(`[{"applicationStatuses":[{"Name":"app","health":{"status":"Healthy"}}]}]`), - }, - }, - }, - } - got := stageToSummary(s) - require.NotNil(t, got.Status.Health) - require.Equal(t, kargoapi.HealthStateHealthy, got.Status.Health.Status) - require.Equal(t, []string{"transient blip"}, got.Status.Health.Issues) - require.Nil(t, got.Status.Health.Output, - "health.output must be nil in summary; fetch via GetStageHealthOutputs") - // Source Stage must be unchanged. - require.NotNil(t, s.Status.Health.Output) - }) - - t.Run("empty freight history omits current freight", func(t *testing.T) { - t.Parallel() - s := &kargoapi.Stage{ - ObjectMeta: metav1.ObjectMeta{Name: "s"}, - Status: kargoapi.StageStatus{FreightHistory: nil}, - } - got := stageToSummary(s) - require.NotNil(t, got) - require.Nil(t, got.Status.CurrentFreight) - }) - - t.Run("nil promotion template yields zero step count", func(t *testing.T) { - t.Parallel() - s := &kargoapi.Stage{ - ObjectMeta: metav1.ObjectMeta{Name: "s"}, - Spec: kargoapi.StageSpec{PromotionTemplate: nil}, - } - got := stageToSummary(s) - require.NotNil(t, got) - require.Zero(t, got.Spec.PromotionStepCount) - }) - - t.Run("nil verification yields hasVerification false", func(t *testing.T) { - t.Parallel() - s := &kargoapi.Stage{ - ObjectMeta: metav1.ObjectMeta{Name: "s"}, - Spec: kargoapi.StageSpec{Verification: nil}, - } - got := stageToSummary(s) - require.NotNil(t, got) - require.False(t, got.Spec.HasVerification) - }) - - t.Run("mutating the summary does not affect the source Stage", func(t *testing.T) { - t.Parallel() - s := &kargoapi.Stage{ - ObjectMeta: metav1.ObjectMeta{Name: "s", Labels: map[string]string{"k": "v"}}, - Spec: kargoapi.StageSpec{ - RequestedFreight: []kargoapi.FreightRequest{{ - Origin: kargoapi.FreightOrigin{Name: "wh"}, - }}, - }, - Status: kargoapi.StageStatus{ - Conditions: []metav1.Condition{{Type: "Ready"}}, - }, - } - got := stageToSummary(s) - - // Mutate the summary. - got.Metadata.Labels["k"] = "mutated" - got.Spec.RequestedFreight[0].Origin.Name = "mutated" - got.Status.Conditions[0].Type = "Mutated" - - // Source Stage should be unchanged. - require.Equal(t, "v", s.Labels["k"]) - require.Equal(t, "wh", s.Spec.RequestedFreight[0].Origin.Name) - require.Equal(t, "Ready", s.Status.Conditions[0].Type) - }) -} diff --git a/pkg/server/watch_stage_summaries_v1alpha1.go b/pkg/server/watch_stage_summaries_v1alpha1.go deleted file mode 100644 index fc4a4d316c..0000000000 --- a/pkg/server/watch_stage_summaries_v1alpha1.go +++ /dev/null @@ -1,88 +0,0 @@ -package server - -import ( - "context" - "fmt" - - "connectrpc.com/connect" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - libClient "sigs.k8s.io/controller-runtime/pkg/client" - - svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" - kargoapi "github.com/akuity/kargo/api/v1alpha1" - "github.com/akuity/kargo/pkg/logging" -) - -// WatchStageSummaries streams StageSummary events for changes to Stages in -// the given project. The response payload mirrors the WatchStages endpoint -// but returns the lightweight StageSummary projection instead of the full -// Stage resource. See ListStageSummaries for the motivation. -func (s *server) WatchStageSummaries( - ctx context.Context, - req *connect.Request[svcv1alpha1.WatchStageSummariesRequest], - stream *connect.ServerStream[svcv1alpha1.WatchStageSummariesResponse], -) error { - project := req.Msg.GetProject() - if err := validateFieldNotEmpty("project", project); err != nil { - return err - } - - if err := s.validateProjectExists(ctx, project); err != nil { - return err - } - - name := req.Msg.GetName() - if name != "" { - if err := s.client.Get(ctx, libClient.ObjectKey{ - Namespace: project, - Name: name, - }, &kargoapi.Stage{}); err != nil { - return fmt.Errorf("get stage: %w", err) - } - } - - freightOrigins := req.Msg.GetFreightOrigins() - - opts := []libClient.ListOption{libClient.InNamespace(project)} - if name != "" { - opts = append(opts, libClient.MatchingFields{"metadata.name": name}) - } - if rv := req.Msg.GetResourceVersion(); rv != "" { - opts = append(opts, &libClient.ListOptions{ - Raw: &metav1.ListOptions{ResourceVersion: rv}, - }) - } - - w, err := s.client.Watch(ctx, &kargoapi.StageList{}, opts...) - if err != nil { - return fmt.Errorf("watch stage summaries: %w", err) - } - defer w.Stop() - - for { - select { - case <-ctx.Done(): - logger := logging.LoggerFromContext(ctx) - logger.Debug(ctx.Err().Error()) - return nil - case e, ok := <-w.ResultChan(): - if !ok { - return nil - } - stage, ok := e.Object.(*kargoapi.Stage) - if !ok { - return fmt.Errorf("unexpected object type %T", e.Object) - } - if len(freightOrigins) > 0 && - !stageMatchesAnyWarehouse(stage, freightOrigins) { - continue - } - if err := stream.Send(&svcv1alpha1.WatchStageSummariesResponse{ - StageSummary: stageToSummary(stage), - Type: string(e.Type), - }); err != nil { - return fmt.Errorf("send response: %w", err) - } - } - } -} diff --git a/pkg/server/watch_stage_summaries_v1alpha1_test.go b/pkg/server/watch_stage_summaries_v1alpha1_test.go deleted file mode 100644 index 22605915fa..0000000000 --- a/pkg/server/watch_stage_summaries_v1alpha1_test.go +++ /dev/null @@ -1,203 +0,0 @@ -package server - -import ( - "context" - "testing" - "time" - - "github.com/stretchr/testify/require" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/client-go/rest" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/client/fake" - - svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" - kargoapi "github.com/akuity/kargo/api/v1alpha1" - "github.com/akuity/kargo/pkg/server/kubernetes" - "github.com/akuity/kargo/pkg/server/validation" -) - -// fakeWatchSummariesStream captures events sent by the server so tests can -// inspect them. -type fakeWatchSummariesStream struct { - events []*svcv1alpha1.WatchStageSummariesResponse -} - -func (f *fakeWatchSummariesStream) Send(resp *svcv1alpha1.WatchStageSummariesResponse) error { - f.events = append(f.events, resp) - return nil -} - -func TestWatchStageSummaries(t *testing.T) { - const projectName = "kargo-demo" - - newStage := func(name, warehouseName string) *kargoapi.Stage { - return &kargoapi.Stage{ - ObjectMeta: metav1.ObjectMeta{Namespace: projectName, Name: name}, - Spec: kargoapi.StageSpec{ - RequestedFreight: []kargoapi.FreightRequest{{ - Origin: kargoapi.FreightOrigin{Kind: kargoapi.FreightOriginKindWarehouse, Name: warehouseName}, - Sources: kargoapi.FreightSources{Direct: true}, - }}, - }, - } - } - - testCases := map[string]struct { - req *svcv1alpha1.WatchStageSummariesRequest - seed []client.Object - after func(ctx context.Context, c client.Client) - wantError bool - assert func(t *testing.T, events []*svcv1alpha1.WatchStageSummariesResponse) - }{ - "empty project is rejected": { - req: &svcv1alpha1.WatchStageSummariesRequest{Project: ""}, - wantError: true, - }, - "non-existing project is rejected": { - req: &svcv1alpha1.WatchStageSummariesRequest{Project: "does-not-exist"}, - wantError: true, - }, - "emits stageSummary (not full Stage) for created objects": { - req: &svcv1alpha1.WatchStageSummariesRequest{Project: projectName}, - after: func(ctx context.Context, c client.Client) { - _ = c.Create(ctx, newStage("a", "wh-a")) - }, - assert: func(t *testing.T, events []*svcv1alpha1.WatchStageSummariesResponse) { - require.NotEmpty(t, events) - evt := events[0] - require.NotNil(t, evt.StageSummary) - require.Equal(t, "a", evt.StageSummary.Metadata.Name) - require.NotEmpty(t, evt.Type) - }, - }, - "filter drops non-matching warehouse events": { - req: &svcv1alpha1.WatchStageSummariesRequest{ - Project: projectName, - FreightOrigins: []string{"wh-a"}, - }, - after: func(ctx context.Context, c client.Client) { - _ = c.Create(ctx, newStage("a", "wh-a")) - _ = c.Create(ctx, newStage("b", "wh-other")) - }, - assert: func(t *testing.T, events []*svcv1alpha1.WatchStageSummariesResponse) { - for _, evt := range events { - require.Equal(t, "a", evt.StageSummary.Metadata.Name) - } - require.NotEmpty(t, events) - }, - }, - } - - for name, tc := range testCases { - t.Run(name, func(t *testing.T) { - t.Parallel() - ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) - defer cancel() - - seed := append([]client.Object{ - &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{ - Name: projectName, - Labels: map[string]string{kargoapi.LabelKeyProject: kargoapi.LabelValueTrue}, - }}, - &kargoapi.Project{ObjectMeta: metav1.ObjectMeta{Name: projectName}}, - }, tc.seed...) - - kubeClient, err := kubernetes.NewClient( - ctx, - &rest.Config{}, - kubernetes.ClientOptions{ - SkipAuthorization: true, - NewInternalClient: func( - context.Context, *rest.Config, *runtime.Scheme, - ) (client.WithWatch, error) { - return fake.NewClientBuilder(). - WithScheme(mustNewScheme()). - WithObjects(seed...). - Build(), nil - }, - }, - ) - require.NoError(t, err) - - svr := &server{client: kubeClient} - svr.externalValidateProjectFn = validation.ValidateProject - - fakeStream := &fakeWatchSummariesStream{} - - errCh := make(chan error, 1) - go func() { - errCh <- runWatchStageSummariesForTest(ctx, svr, tc.req, fakeStream) - }() - - // Let the watch start before triggering operations. - time.Sleep(100 * time.Millisecond) - if tc.after != nil { - tc.after(ctx, svr.client.InternalClient()) - } - time.Sleep(300 * time.Millisecond) - cancel() - err = <-errCh - - if tc.wantError { - require.Error(t, err) - return - } - require.NoError(t, err) - if tc.assert != nil { - tc.assert(t, fakeStream.events) - } - }) - } -} - -// runWatchStageSummariesForTest mirrors WatchStageSummaries but sends events -// to a test stream instead of a connect.ServerStream. Keeps test logic -// independent of connect's unexported stream constructors. -func runWatchStageSummariesForTest( - ctx context.Context, - s *server, - req *svcv1alpha1.WatchStageSummariesRequest, - out interface { - Send(*svcv1alpha1.WatchStageSummariesResponse) error - }, -) error { - if err := validateFieldNotEmpty("project", req.GetProject()); err != nil { - return err - } - if err := s.validateProjectExists(ctx, req.GetProject()); err != nil { - return err - } - freightOrigins := req.GetFreightOrigins() - w, err := s.client.Watch(ctx, &kargoapi.StageList{}, client.InNamespace(req.GetProject())) - if err != nil { - return err - } - defer w.Stop() - for { - select { - case <-ctx.Done(): - return nil - case e, ok := <-w.ResultChan(): - if !ok { - return nil - } - stage, ok := e.Object.(*kargoapi.Stage) - if !ok { - continue - } - if len(freightOrigins) > 0 && - !stageMatchesAnyWarehouse(stage, freightOrigins) { - continue - } - if err := out.Send(&svcv1alpha1.WatchStageSummariesResponse{ - StageSummary: stageToSummary(stage), - Type: string(e.Type), - }); err != nil { - return err - } - } - } -} diff --git a/pkg/server/watch_stages_v1alpha1.go b/pkg/server/watch_stages_v1alpha1.go index 9c58102d38..9b7c29ff8c 100644 --- a/pkg/server/watch_stages_v1alpha1.go +++ b/pkg/server/watch_stages_v1alpha1.go @@ -5,6 +5,7 @@ import ( "fmt" "connectrpc.com/connect" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" libClient "sigs.k8s.io/controller-runtime/pkg/client" svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" @@ -28,6 +29,7 @@ func (s *server) WatchStages( name := req.Msg.GetName() warehouses := req.Msg.GetFreightOrigins() + summary := req.Msg.GetSummary() if name != "" { if err := s.client.Get(ctx, libClient.ObjectKey{ @@ -42,6 +44,11 @@ func (s *server) WatchStages( if name != "" { watchOpts = append(watchOpts, libClient.MatchingFields{"metadata.name": name}) } + if rv := req.Msg.GetResourceVersion(); rv != "" { + watchOpts = append(watchOpts, &libClient.ListOptions{ + Raw: &metav1.ListOptions{ResourceVersion: rv}, + }) + } w, err := s.client.Watch(ctx, &kargoapi.StageList{}, watchOpts...) if err != nil { return fmt.Errorf("watch stage: %w", err) @@ -64,6 +71,9 @@ func (s *server) WatchStages( if len(warehouses) > 0 && !stageMatchesAnyWarehouse(stage, warehouses) { continue } + if summary { + stripStageForSummary(stage) + } if err := stream.Send(&svcv1alpha1.WatchStagesResponse{ Stage: stage, Type: string(e.Type), diff --git a/swagger.json b/swagger.json index b76d6db8bb..9bab57aaf5 100644 --- a/swagger.json +++ b/swagger.json @@ -2321,7 +2321,7 @@ "BearerAuth": [] } ], - "description": "Return the raw health output blob for the specified Stages\nin a project. Stages that do not exist or have no recorded\nhealth output are omitted from the response. Intended for\nclients that use ListStageSummaries (which omits the output\nblob) and need to lazily resolve health for Stages currently\nin viewport.", + "description": "Return the raw health output blob for the specified Stages\nin a project. Stages that do not exist or have no recorded\nhealth output are omitted from the response. Intended for\nclients that use ListStages with summary=true (which omits the output\nblob) and need to lazily resolve health for Stages currently\nin viewport.", "produces": [ "application/json" ], @@ -2361,52 +2361,6 @@ } } }, - "/v1beta1/projects/{project}/stage-summaries": { - "get": { - "security": [ - { - "BearerAuth": [] - } - ], - "description": "List a lightweight projection of Stage resources from a\nproject's namespace. Intended for UI list and graph views that\nneed metadata and current state for many Stages at once but do\nnot need full FreightHistory, PromotionTemplate steps, or\nVerification configuration. Use GetStage for detail fields.", - "produces": [ - "application/json" - ], - "tags": [ - "Core", - "Project-Level" - ], - "summary": "List Stage Summaries", - "operationId": "ListStageSummaries", - "parameters": [ - { - "type": "string", - "description": "Project name", - "name": "project", - "in": "path", - "required": true - }, - { - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "multi", - "description": "Warehouse name(s) to filter by", - "name": "freightOrigins", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/github_com_akuity_kargo_api_service_v1alpha1.ListStageSummariesResponse" - } - } - } - } - }, "/v1beta1/projects/{project}/stages": { "get": { "security": [ @@ -2414,7 +2368,7 @@ "BearerAuth": [] } ], - "description": "List Stage resources from a project's namespace. Returns a\nStageList resource.", + "description": "List Stage resources from a project's namespace. Returns a\nStageList resource. Pass summary=true to receive a lightweight\nprojection for list and graph views.", "produces": [ "application/json" ], @@ -2441,6 +2395,12 @@ "description": "Warehouse names to filter Stages by", "name": "freightOrigins", "in": "query" + }, + { + "type": "boolean", + "description": "Strip heavy fields from each Stage", + "name": "summary", + "in": "query" } ], "responses": { @@ -5247,131 +5207,6 @@ } } }, - "github_com_akuity_kargo_api_service_v1alpha1.ListStageSummariesResponse": { - "type": "object", - "properties": { - "resource_version": { - "description": "resourceVersion is the Kubernetes ResourceVersion of the underlying\nStageList. Clients may pass this value to WatchStageSummaries to begin\nwatching from the exact point this list was taken, receiving only\nsubsequent changes without redundant initial events.", - "type": "string" - }, - "stage_summaries": { - "description": "stageSummaries is the list of StageSummary objects found in the project.", - "type": "array", - "items": { - "$ref": "#/definitions/github_com_akuity_kargo_api_service_v1alpha1.StageSummary" - } - } - } - }, - "github_com_akuity_kargo_api_service_v1alpha1.StageSpecSummary": { - "type": "object", - "properties": { - "has_verification": { - "description": "hasVerification indicates whether the Stage defines a Verification.\nUse GetStage to retrieve the full Verification configuration.", - "type": "boolean" - }, - "promotion_step_count": { - "description": "promotionStepCount is the number of promotion steps defined in the\nStage's PromotionTemplate, or zero if no PromotionTemplate is defined.\nUse GetStage to retrieve the full step configuration.", - "type": "integer" - }, - "requested_freight": { - "description": "requestedFreight mirrors StageSpec.requestedFreight. This is needed in\nfull to render graph edges between Stages and their upstream sources.", - "type": "array", - "items": { - "$ref": "#/definitions/FreightRequest" - } - }, - "shard": { - "description": "shard is the name of the shard that the Stage belongs to, mirroring\nStageSpec.shard.", - "type": "string" - } - } - }, - "github_com_akuity_kargo_api_service_v1alpha1.StageStatusSummary": { - "type": "object", - "properties": { - "auto_promotion_enabled": { - "description": "autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled.", - "type": "boolean" - }, - "conditions": { - "description": "conditions mirrors StageStatus.conditions.", - "type": "array", - "items": { - "$ref": "#/definitions/V1Condition" - } - }, - "current_freight": { - "description": "currentFreight is the FreightCollection currently deployed to the Stage\n(i.e. index 0 of StageStatus.freightHistory), or null if no Freight has\nbeen deployed. Use GetStage to retrieve the full FreightHistory.", - "allOf": [ - { - "$ref": "#/definitions/FreightCollection" - } - ] - }, - "current_promotion": { - "description": "currentPromotion mirrors StageStatus.currentPromotion.", - "allOf": [ - { - "$ref": "#/definitions/PromotionReference" - } - ] - }, - "health": { - "description": "health mirrors StageStatus.health.", - "allOf": [ - { - "$ref": "#/definitions/Health" - } - ] - }, - "last_handled_refresh": { - "description": "lastHandledRefresh mirrors StageStatus.lastHandledRefresh.", - "type": "string" - }, - "last_promotion": { - "description": "lastPromotion mirrors StageStatus.lastPromotion.", - "allOf": [ - { - "$ref": "#/definitions/PromotionReference" - } - ] - }, - "observed_generation": { - "description": "observedGeneration mirrors StageStatus.observedGeneration.", - "type": "integer" - } - } - }, - "github_com_akuity_kargo_api_service_v1alpha1.StageSummary": { - "type": "object", - "properties": { - "metadata": { - "description": "metadata contains the Stage's identity and Kubernetes object metadata.", - "allOf": [ - { - "$ref": "#/definitions/V1ObjectMeta" - } - ] - }, - "spec": { - "description": "spec contains the subset of StageSpec fields needed by list/graph views.", - "allOf": [ - { - "$ref": "#/definitions/github_com_akuity_kargo_api_service_v1alpha1.StageSpecSummary" - } - ] - }, - "status": { - "description": "status contains the subset of StageStatus fields needed by list/graph views.", - "allOf": [ - { - "$ref": "#/definitions/github_com_akuity_kargo_api_service_v1alpha1.StageStatusSummary" - } - ] - } - } - }, "RolloutsAnalysisRun": { "type": "object", "properties": { diff --git a/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts b/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts index c0993afc55..70506bc8a2 100644 --- a/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts +++ b/ui/src/gen/api/service/v1alpha1/service-KargoService_connectquery.ts @@ -72,22 +72,15 @@ export const deleteResource = KargoService.method.deleteResource; export const refreshResource = KargoService.method.refreshResource; /** - * ListStages retrieves all stages within a project. + * ListStages retrieves all stages within a project. Pass summary=true to + * receive a lightweight projection intended for list and graph views + * (heavy fields are stripped from each returned Stage; see the summary + * field on ListStagesRequest for details). * * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.ListStages */ export const listStages = KargoService.method.listStages; -/** - * ListStageSummaries retrieves a lightweight projection of Stages within a - * project, containing only the fields typically required to render list - * and graph views. Use GetStage to retrieve the full Stage resource when - * detail-level fields are needed. - * - * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries - */ -export const listStageSummaries = KargoService.method.listStageSummaries; - /** * ListImages returns available images and their usage across stages. * @@ -105,7 +98,7 @@ export const getStage = KargoService.method.getStage; /** * GetStageHealthOutputs returns the raw health output blob for the * specified Stages in a project. Intended for clients that use - * ListStageSummaries for the list and need to resolve per-argocd-app + * ListStages with summary=true and need to resolve per-argocd-app * health only for the Stages currently in viewport. Stages that do not * exist or have no health output recorded are omitted from the response. * diff --git a/ui/src/gen/api/service/v1alpha1/service_pb.ts b/ui/src/gen/api/service/v1alpha1/service_pb.ts index fb2347faed..6519ce137a 100644 --- a/ui/src/gen/api/service/v1alpha1/service_pb.ts +++ b/ui/src/gen/api/service/v1alpha1/service_pb.ts @@ -6,11 +6,10 @@ import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobu import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; import type { Any, Timestamp } from "@bufbuild/protobuf/wkt"; import { file_google_protobuf_any, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; -import type { ClusterConfig, ClusterPromotionTask, Freight, FreightCollection, FreightRequest, Health, Project, ProjectConfig, Promotion, PromotionReference, PromotionTask, Stage, Warehouse } from "../../v1alpha1/generated_pb"; +import type { ClusterConfig, ClusterPromotionTask, Freight, Project, ProjectConfig, Promotion, PromotionTask, Stage, Warehouse } from "../../v1alpha1/generated_pb"; import { file_api_v1alpha1_generated } from "../../v1alpha1/generated_pb"; import type { ConfigMap, Event, Secret } from "../../../k8s.io/api/core/v1/generated_pb"; import { file_k8s_io_api_core_v1_generated } from "../../../k8s.io/api/core/v1/generated_pb"; -import type { Condition, ObjectMeta } from "../../../k8s.io/apimachinery/pkg/apis/meta/v1/generated_pb"; import { file_k8s_io_apimachinery_pkg_apis_meta_v1_generated } from "../../../k8s.io/apimachinery/pkg/apis/meta/v1/generated_pb"; import type { AnalysisRun, AnalysisTemplate, ClusterAnalysisTemplate } from "../../stubs/rollouts/v1alpha1/generated_pb"; import { file_api_stubs_rollouts_v1alpha1_generated } from "../../stubs/rollouts/v1alpha1/generated_pb"; @@ -22,7 +21,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file api/service/v1alpha1/service.proto. */ export const file_api_service_v1alpha1_service: GenFile = /*@__PURE__*/ - fileDesc("CiJhcGkvc2VydmljZS92MWFscGhhMS9zZXJ2aWNlLnByb3RvEiBha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMSKrAQoRQ29tcG9uZW50VmVyc2lvbnMSQgoGc2VydmVyGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm9IAIgBARI/CgNjbGkYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5WZXJzaW9uSW5mb0gBiAEBQgkKB19zZXJ2ZXJCBgoEX2NsaSKyAQoLVmVyc2lvbkluZm8SDwoHdmVyc2lvbhgBIAEoCRISCgpnaXRfY29tbWl0GAIgASgJEhYKDmdpdF90cmVlX2RpcnR5GAMgASgIEi4KCmJ1aWxkX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdvX3ZlcnNpb24YBSABKAkSEAoIY29tcGlsZXIYBiABKAkSEAoIcGxhdGZvcm0YByABKAkiFwoVR2V0VmVyc2lvbkluZm9SZXF1ZXN0Il0KFkdldFZlcnNpb25JbmZvUmVzcG9uc2USQwoMdmVyc2lvbl9pbmZvGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm8iEgoQR2V0Q29uZmlnUmVxdWVzdCItCgtBcmdvQ0RTaGFyZBILCgN1cmwYASABKAkSEQoJbmFtZXNwYWNlGAIgASgJIsgCChFHZXRDb25maWdSZXNwb25zZRJcCg1hcmdvY2Rfc2hhcmRzGAEgAygLMkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UuQXJnb2NkU2hhcmRzRW50cnkSIQoZc2VjcmV0X21hbmFnZW1lbnRfZW5hYmxlZBgCIAEoCBIiChpzeXN0ZW1fcmVzb3VyY2VzX25hbWVzcGFjZRgDIAEoCRIqCiJoYXNfYW5hbHlzaXNfcnVuX2xvZ3NfdXJsX3RlbXBsYXRlGAQgASgIGmIKEUFyZ29jZFNoYXJkc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFyZ29DRFNoYXJkOgI4ASIYChZHZXRQdWJsaWNDb25maWdSZXF1ZXN0Io4BChdHZXRQdWJsaWNDb25maWdSZXNwb25zZRJBCgtvaWRjX2NvbmZpZxgBIAEoCzIsLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLk9JRENDb25maWcSHQoVYWRtaW5fYWNjb3VudF9lbmFibGVkGAIgASgIEhEKCXNraXBfYXV0aBgDIAEoCCJaCgpPSURDQ29uZmlnEhIKCmlzc3Vlcl91cmwYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1jbGlfY2xpZW50X2lkGAQgASgJIiUKEUFkbWluTG9naW5SZXF1ZXN0EhAKCHBhc3N3b3JkGAEgASgJIiYKEkFkbWluTG9naW5SZXNwb25zZRIQCghpZF90b2tlbhgBIAEoCSIpChVDcmVhdGVSZXNvdXJjZVJlcXVlc3QSEAoIbWFuaWZlc3QYASABKAwiVgoUQ3JlYXRlUmVzb3VyY2VSZXN1bHQSIwoZY3JlYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgBIAEoDEgAEg8KBWVycm9yGAIgASgJSABCCAoGcmVzdWx0ImEKFkNyZWF0ZVJlc291cmNlUmVzcG9uc2USRwoHcmVzdWx0cxgBIAMoCzI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzdWx0IjEKHUNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIoMBChxDcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0EiMKGWNyZWF0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAIgASgMSAASDwoFZXJyb3IYAyABKAlIAEIICgZyZXN1bHQicQoeQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEk8KB3Jlc3VsdHMYASADKAsyPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0IikKFVVwZGF0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCJWChRVcGRhdGVSZXNvdXJjZVJlc3VsdBIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASDwoFZXJyb3IYAiABKAlIAEIICgZyZXN1bHQiYQoWVXBkYXRlUmVzb3VyY2VSZXNwb25zZRJHCgdyZXN1bHRzGAEgAygLMjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXN1bHQiKQoVRGVsZXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIlYKFERlbGV0ZVJlc291cmNlUmVzdWx0EiMKGWRlbGV0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIPCgVlcnJvchgCIAEoCUgAQggKBnJlc3VsdCJhChZEZWxldGVSZXNvdXJjZVJlc3BvbnNlEkcKB3Jlc3VsdHMYASADKAsyNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3VsdCI9ChFMaXN0U3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEhcKD2ZyZWlnaHRfb3JpZ2lucxgCIAMoCSJRChJMaXN0U3RhZ2VzUmVzcG9uc2USOwoGc3RhZ2VzGAEgAygLMisuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlN0YWdlIiQKEUxpc3RJbWFnZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkivwEKEkxpc3RJbWFnZXNSZXNwb25zZRJQCgZpbWFnZXMYAiADKAsyQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0SW1hZ2VzUmVzcG9uc2UuSW1hZ2VzRW50cnkaVwoLSW1hZ2VzRW50cnkSCwoDa2V5GAEgASgJEjcKBXZhbHVlGAIgASgLMiguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVGFnTWFwOgI4ASKoAQoGVGFnTWFwEkAKBHRhZ3MYASADKAsyMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5UYWdNYXAuVGFnc0VudHJ5GlwKCVRhZ3NFbnRyeRILCgNrZXkYASABKAkSPgoFdmFsdWUYAiABKAsyLy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5JbWFnZVN0YWdlTWFwOgI4ASKLAQoNSW1hZ2VTdGFnZU1hcBJLCgZzdGFnZXMYASADKAsyOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5JbWFnZVN0YWdlTWFwLlN0YWdlc0VudHJ5Gi0KC1N0YWdlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBToCOAEibQoPR2V0U3RhZ2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiaQoQR2V0U3RhZ2VSZXNwb25zZRI8CgVzdGFnZRgBIAEoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJEChxHZXRTdGFnZUhlYWx0aE91dHB1dHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSEwoLc3RhZ2VfbmFtZXMYAiADKAkiwQEKHUdldFN0YWdlSGVhbHRoT3V0cHV0c1Jlc3BvbnNlEmoKDmhlYWx0aF9vdXRwdXRzGAEgAygLMlIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VIZWFsdGhPdXRwdXRzUmVzcG9uc2UuSGVhbHRoT3V0cHV0c0VudHJ5GjQKEkhlYWx0aE91dHB1dHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAw6AjgBIkwKEldhdGNoU3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSFwoPZnJlaWdodF9vcmlnaW5zGAMgAygJIl8KE1dhdGNoU3RhZ2VzUmVzcG9uc2USOgoFc3RhZ2UYASABKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2USDAoEdHlwZRgCIAEoCSIzChJEZWxldGVTdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhUKE0RlbGV0ZVN0YWdlUmVzcG9uc2UiigIKDFN0YWdlU3VtbWFyeRJHCghtZXRhZGF0YRgBIAEoCzIwLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5PYmplY3RNZXRhSACIAQESRQoEc3BlYxgCIAEoCzIyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlN0YWdlU3BlY1N1bW1hcnlIAYgBARJJCgZzdGF0dXMYAyABKAsyNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5TdGFnZVN0YXR1c1N1bW1hcnlIAogBAUILCglfbWV0YWRhdGFCBwoFX3NwZWNCCQoHX3N0YXR1cyKqAQoQU3RhZ2VTcGVjU3VtbWFyeRINCgVzaGFyZBgBIAEoCRJPChFyZXF1ZXN0ZWRfZnJlaWdodBgCIAMoCzI0LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0UmVxdWVzdBIcChRwcm9tb3Rpb25fc3RlcF9jb3VudBgDIAEoBRIYChBoYXNfdmVyaWZpY2F0aW9uGAQgASgIIscEChJTdGFnZVN0YXR1c1N1bW1hcnkSQwoKY29uZGl0aW9ucxgBIAMoCzIvLms4cy5pby5hcGltYWNoaW5lcnkucGtnLmFwaXMubWV0YS52MS5Db25kaXRpb24SHAoUbGFzdF9oYW5kbGVkX3JlZnJlc2gYAiABKAkSVQoPY3VycmVudF9mcmVpZ2h0GAMgASgLMjcuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRDb2xsZWN0aW9uSACIAQESWAoRY3VycmVudF9wcm9tb3Rpb24YBCABKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uUmVmZXJlbmNlSAGIAQESVQoObGFzdF9wcm9tb3Rpb24YBSABKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uUmVmZXJlbmNlSAKIAQESQQoGaGVhbHRoGAYgASgLMiwuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkhlYWx0aEgDiAEBEhsKE29ic2VydmVkX2dlbmVyYXRpb24YByABKAMSHgoWYXV0b19wcm9tb3Rpb25fZW5hYmxlZBgIIAEoCEISChBfY3VycmVudF9mcmVpZ2h0QhQKEl9jdXJyZW50X3Byb21vdGlvbkIRCg9fbGFzdF9wcm9tb3Rpb25CCQoHX2hlYWx0aCJFChlMaXN0U3RhZ2VTdW1tYXJpZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSFwoPZnJlaWdodF9vcmlnaW5zGAIgAygJIn8KGkxpc3RTdGFnZVN1bW1hcmllc1Jlc3BvbnNlEkcKD3N0YWdlX3N1bW1hcmllcxgBIAMoCzIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlN0YWdlU3VtbWFyeRIYChByZXNvdXJjZV92ZXJzaW9uGAIgASgJIm4KGldhdGNoU3RhZ2VTdW1tYXJpZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRIXCg9mcmVpZ2h0X29yaWdpbnMYAyADKAkSGAoQcmVzb3VyY2VfdmVyc2lvbhgEIAEoCSKJAQobV2F0Y2hTdGFnZVN1bW1hcmllc1Jlc3BvbnNlEkoKDXN0YWdlX3N1bW1hcnkYASABKAsyLi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5TdGFnZVN1bW1hcnlIAIgBARIMCgR0eXBlGAIgASgJQhAKDl9zdGFnZV9zdW1tYXJ5IlYKF0dldENsdXN0ZXJDb25maWdSZXF1ZXN0EjsKBmZvcm1hdBgBIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKCAQoYR2V0Q2x1c3RlckNvbmZpZ1Jlc3BvbnNlEk0KDmNsdXN0ZXJfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJDb25maWdIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiHAoaRGVsZXRlQ2x1c3RlckNvbmZpZ1JlcXVlc3QiHQobRGVsZXRlQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlIhsKGVdhdGNoQ2x1c3RlckNvbmZpZ1JlcXVlc3QidwoaV2F0Y2hDbHVzdGVyQ29uZmlnUmVzcG9uc2USSwoOY2x1c3Rlcl9jb25maWcYASABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2x1c3RlckNvbmZpZxIMCgR0eXBlGAIgASgJIkYKFUxpc3RQcm9tb3Rpb25zUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEhIKBXN0YWdlGAIgASgJSACIAQFCCAoGX3N0YWdlIl0KFkxpc3RQcm9tb3Rpb25zUmVzcG9uc2USQwoKcHJvbW90aW9ucxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24iRwoWV2F0Y2hQcm9tb3Rpb25zUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEhIKBXN0YWdlGAIgASgJSACIAQFCCAoGX3N0YWdlImsKF1dhdGNoUHJvbW90aW9uc1Jlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24SDAoEdHlwZRgCIAEoCSJxChNHZXRQcm9tb3Rpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQidQoUR2V0UHJvbW90aW9uUmVzcG9uc2USRAoJcHJvbW90aW9uGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbkgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI2ChVXYXRjaFByb21vdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJImoKFldhdGNoUHJvbW90aW9uUmVzcG9uc2USQgoJcHJvbW90aW9uGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbhIMCgR0eXBlGAIgASgJIjYKFUFib3J0UHJvbW90aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiGAoWQWJvcnRQcm9tb3Rpb25SZXNwb25zZSIkChREZWxldGVQcm9qZWN0UmVxdWVzdBIMCgRuYW1lGAEgASgJIhcKFURlbGV0ZVByb2plY3RSZXNwb25zZSJeChFHZXRQcm9qZWN0UmVxdWVzdBIMCgRuYW1lGAEgASgJEjsKBmZvcm1hdBgCIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJvChJHZXRQcm9qZWN0UmVzcG9uc2USQAoHcHJvamVjdBgBIAEoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9qZWN0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IqABChNMaXN0UHJvamVjdHNSZXF1ZXN0EhYKCXBhZ2Vfc2l6ZRgBIAEoBUgAiAEBEhEKBHBhZ2UYAiABKAVIAYgBARITCgZmaWx0ZXIYAyABKAlIAogBARILCgN1aWQYBCADKAkSEQoEbWluZRgFIAEoCEgDiAEBQgwKCl9wYWdlX3NpemVCBwoFX3BhZ2VCCQoHX2ZpbHRlckIHCgVfbWluZSJmChRMaXN0UHJvamVjdHNSZXNwb25zZRI/Cghwcm9qZWN0cxgBIAMoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9qZWN0Eg0KBXRvdGFsGAIgASgFImcKF0dldFByb2plY3RDb25maWdSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSOwoGZm9ybWF0GAIgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IoIBChhHZXRQcm9qZWN0Q29uZmlnUmVzcG9uc2USTQoOcHJvamVjdF9jb25maWcYASABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdENvbmZpZ0gAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCItChpEZWxldGVQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIh0KG0RlbGV0ZVByb2plY3RDb25maWdSZXNwb25zZSIsChlXYXRjaFByb2plY3RDb25maWdSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkidwoaV2F0Y2hQcm9qZWN0Q29uZmlnUmVzcG9uc2USSwoOcHJvamVjdF9jb25maWcYASABKAsyMy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdENvbmZpZxIMCgR0eXBlGAIgASgJIlQKFUFwcHJvdmVGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWxpYXMYAyABKAkSDQoFc3RhZ2UYBCABKAkiGAoWQXBwcm92ZUZyZWlnaHRSZXNwb25zZSJEChREZWxldGVGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWxpYXMYAyABKAkiFwoVRGVsZXRlRnJlaWdodFJlc3BvbnNlIn4KEUdldEZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRINCgVhbGlhcxgDIAEoCRI7CgZmb3JtYXQYBCABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQibwoSR2V0RnJlaWdodFJlc3BvbnNlEkAKB2ZyZWlnaHQYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI3ChNXYXRjaEZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDwoHb3JpZ2lucxgCIAMoCSJkChRXYXRjaEZyZWlnaHRSZXNwb25zZRI+CgdmcmVpZ2h0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHQSDAoEdHlwZRgCIAEoCSJfChVQcm9tb3RlVG9TdGFnZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCRIPCgdmcmVpZ2h0GAMgASgJEhUKDWZyZWlnaHRfYWxpYXMYBCABKAkiXAoWUHJvbW90ZVRvU3RhZ2VSZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uImIKGFByb21vdGVEb3duc3RyZWFtUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJEg8KB2ZyZWlnaHQYAyABKAkSFQoNZnJlaWdodF9hbGlhcxgEIAEoCSJgChlQcm9tb3RlRG93bnN0cmVhbVJlc3BvbnNlEkMKCnByb21vdGlvbnMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uIooBChNRdWVyeUZyZWlnaHRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkSEAoIZ3JvdXBfYnkYAyABKAkSDQoFZ3JvdXAYBCABKAkSEAoIb3JkZXJfYnkYBSABKAkSDwoHcmV2ZXJzZRgGIAEoCBIPCgdvcmlnaW5zGAcgAygJIsgBChRRdWVyeUZyZWlnaHRSZXNwb25zZRJSCgZncm91cHMYASADKAsyQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5RdWVyeUZyZWlnaHRSZXNwb25zZS5Hcm91cHNFbnRyeRpcCgtHcm91cHNFbnRyeRILCgNrZXkYASABKAkSPAoFdmFsdWUYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5GcmVpZ2h0TGlzdDoCOAEiTQoLRnJlaWdodExpc3QSPgoHZnJlaWdodBgBIAMoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0ImAKGVVwZGF0ZUZyZWlnaHRBbGlhc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCW9sZF9hbGlhcxgDIAEoCRIRCgluZXdfYWxpYXMYBCABKAkiHAoaVXBkYXRlRnJlaWdodEFsaWFzUmVzcG9uc2UiMQoPUmV2ZXJpZnlSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkiEgoQUmV2ZXJpZnlSZXNwb25zZSI6ChhBYm9ydFZlcmlmaWNhdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCSIbChlBYm9ydFZlcmlmaWNhdGlvblJlc3BvbnNlIigKFUxpc3RXYXJlaG91c2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIl0KFkxpc3RXYXJlaG91c2VzUmVzcG9uc2USQwoKd2FyZWhvdXNlcxgBIAMoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5XYXJlaG91c2UicQoTR2V0V2FyZWhvdXNlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0InUKFEdldFdhcmVob3VzZVJlc3BvbnNlEkQKCXdhcmVob3VzZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5XYXJlaG91c2VIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNwoWV2F0Y2hXYXJlaG91c2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiawoXV2F0Y2hXYXJlaG91c2VzUmVzcG9uc2USQgoJd2FyZWhvdXNlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLldhcmVob3VzZRIMCgR0eXBlGAIgASgJIjcKFkRlbGV0ZVdhcmVob3VzZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhkKF0RlbGV0ZVdhcmVob3VzZVJlc3BvbnNlIvQBChZDcmVhdGVDb25maWdNYXBSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSUAoEZGF0YRgFIAMoCzJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUNvbmZpZ01hcFJlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgGIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJMChdDcmVhdGVDb25maWdNYXBSZXNwb25zZRIxCgpjb25maWdfbWFwGAEgASgLMh0uazhzLmlvLmFwaS5jb3JlLnYxLkNvbmZpZ01hcCJNChZEZWxldGVDb25maWdNYXBSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkiGQoXRGVsZXRlQ29uZmlnTWFwUmVzcG9uc2UiPgoVTGlzdENvbmZpZ01hcHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgCIAEoCBIPCgdwcm9qZWN0GAEgASgJIkwKFkxpc3RDb25maWdNYXBzUmVzcG9uc2USMgoLY29uZmlnX21hcHMYASADKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwIocBChNHZXRDb25maWdNYXBSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgEIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImQKFEdldENvbmZpZ01hcFJlc3BvbnNlEjMKCmNvbmZpZ19tYXAYASABKAsyHS5rOHMuaW8uYXBpLmNvcmUudjEuQ29uZmlnTWFwSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IvQBChZVcGRhdGVDb25maWdNYXBSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkSEwoLZGVzY3JpcHRpb24YBCABKAkSUAoEZGF0YRgFIAMoCzJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUNvbmZpZ01hcFJlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgGIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJMChdVcGRhdGVDb25maWdNYXBSZXNwb25zZRIxCgpjb25maWdfbWFwGAEgASgLMh0uazhzLmlvLmFwaS5jb3JlLnYxLkNvbmZpZ01hcCLKAQocQ3JlYXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YCCABKAkSDAoEdHlwZRgDIAEoCRIZCghyZXBvX3VybBgEIAEoCVIHcmVwb1VSTBIpChFyZXBvX3VybF9pc19yZWdleBgFIAEoCFIOcmVwb1VSTElzUmVnZXgSEAoIdXNlcm5hbWUYBiABKAkSEAoIcGFzc3dvcmQYByABKAkiUAodQ3JlYXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0Ij0KHERlbGV0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIh8KHURlbGV0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlIncKGUdldFJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJoChpHZXRSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIxCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiLQoaTGlzdFJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJOChtMaXN0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASADKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IsoBChxVcGRhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIMCgR0eXBlGAMgASgJEhkKCHJlcG9fdXJsGAQgASgJUgdyZXBvVVJMEikKEXJlcG9fdXJsX2lzX3JlZ2V4GAUgASgIUg5yZXBvVVJMSXNSZWdleBIQCgh1c2VybmFtZRgGIAEoCRIQCghwYXNzd29yZBgHIAEoCSJQCh1VcGRhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiRgodTGlzdEdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAIgASgIEg8KB3Byb2plY3QYASABKAkiUQoeTGlzdEdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgAygLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCKGAgofQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYBiABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJElkKBGRhdGEYBCADKAsySy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0LkRhdGFFbnRyeRIRCglyZXBsaWNhdGUYBSABKAgaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiUwogQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IoYCCh9VcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgGIAEoCBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSWQoEZGF0YRgEIAMoCzJLLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QuRGF0YUVudHJ5EhEKCXJlcGxpY2F0ZRgFIAEoCBorCglEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJTCiBVcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiVgofRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAyABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIiIKIERlbGV0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlIi8KHExpc3RBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSKCAQodTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USYQoSYW5hbHlzaXNfdGVtcGxhdGVzGAEgAygLMkUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkFuYWx5c2lzVGVtcGxhdGUieAoaR2V0QW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKaAQobR2V0QW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEmIKEWFuYWx5c2lzX3RlbXBsYXRlGAEgASgLMkUuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkFuYWx5c2lzVGVtcGxhdGVIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiPgodRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIiAKHkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZSIlCiNMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdCKzAQokTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1Jlc3BvbnNlEooBChpjbHVzdGVyX2FuYWx5c2lzX3RlbXBsYXRlcxgBIAMoCzJMLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5DbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVIYY2x1c3RlcmFuYWx5c2lzVGVtcGxhdGVzIm4KIUdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKwAQoiR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRJxChljbHVzdGVyX2FuYWx5c2lzX3RlbXBsYXRlGAEgASgLMkwuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjQKJERlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBIMCgRuYW1lGAIgASgJIicKJURlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2UidQoVR2V0QW5hbHlzaXNSdW5SZXF1ZXN0EhEKCW5hbWVzcGFjZRgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKLAQoWR2V0QW5hbHlzaXNSdW5SZXNwb25zZRJYCgxhbmFseXNpc19ydW4YASABKAsyQC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQW5hbHlzaXNSdW5IABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiaQoZR2V0QW5hbHlzaXNSdW5Mb2dzUmVxdWVzdBIRCgluYW1lc3BhY2UYASABKAkSDAoEbmFtZRgCIAEoCRITCgttZXRyaWNfbmFtZRgDIAEoCRIWCg5jb250YWluZXJfbmFtZRgEIAEoCSIrChpHZXRBbmFseXNpc1J1bkxvZ3NSZXNwb25zZRINCgVjaHVuaxgBIAEoCSIrChhMaXN0UHJvamVjdEV2ZW50c1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJGChlMaXN0UHJvamVjdEV2ZW50c1Jlc3BvbnNlEikKBmV2ZW50cxgBIAMoCzIZLms4cy5pby5hcGkuY29yZS52MS5FdmVudCIsChlMaXN0UHJvbW90aW9uVGFza3NSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiagoaTGlzdFByb21vdGlvblRhc2tzUmVzcG9uc2USTAoPcHJvbW90aW9uX3Rhc2tzGAEgAygLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblRhc2sidQoXR2V0UHJvbW90aW9uVGFza1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKCAQoYR2V0UHJvbW90aW9uVGFza1Jlc3BvbnNlEk0KDnByb21vdGlvbl90YXNrGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvblRhc2tIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiIgogTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1JlcXVlc3QigAEKIUxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXNwb25zZRJbChdjbHVzdGVyX3Byb21vdGlvbl90YXNrcxgBIAMoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyUHJvbW90aW9uVGFzayJrCh5HZXRDbHVzdGVyUHJvbW90aW9uVGFza1JlcXVlc3QSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQipgEKH0dldENsdXN0ZXJQcm9tb3Rpb25UYXNrUmVzcG9uc2USagoOcHJvbW90aW9uX3Rhc2sYASABKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2x1c3RlclByb21vdGlvblRhc2tIAFIUY2x1c3RlclByb21vdGlvblRhc2sSDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IlIKEUNyZWF0ZVJvbGVSZXF1ZXN0Ej0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIlMKEkNyZWF0ZVJvbGVSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSIyChFEZWxldGVSb2xlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiFAoSRGVsZXRlUm9sZVJlc3BvbnNlIpgBCg5HZXRSb2xlUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYBSABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhQKDGFzX3Jlc291cmNlcxgDIAEoCBI7CgZmb3JtYXQYBCABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiugEKD0dldFJvbGVSZXNwb25zZRI/CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZUgAEk0KCXJlc291cmNlcxgCIAEoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGVSZXNvdXJjZXNIABINCgNyYXcYAyABKAxIAEIICgZyZXN1bHQiSgoGQ2xhaW1zEkAKBmNsYWltcxgBIAMoCzIwLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLkNsYWltItEBCgxHcmFudFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRyb2xlGAIgASgJEj8KC3VzZXJfY2xhaW1zGAMgASgLMiguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ2xhaW1zSAASVgoQcmVzb3VyY2VfZGV0YWlscxgEIAEoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJlc291cmNlRGV0YWlsc0gAQgkKB3JlcXVlc3QiTgoNR3JhbnRSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJPChBMaXN0Um9sZXNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgDIAEoCBIPCgdwcm9qZWN0GAEgASgJEhQKDGFzX3Jlc291cmNlcxgCIAEoCCKgAQoRTGlzdFJvbGVzUmVzcG9uc2USPgoFcm9sZXMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlEksKCXJlc291cmNlcxgCIAMoCzI4LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGVSZXNvdXJjZXMi0gEKDVJldm9rZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRyb2xlGAIgASgJEj8KC3VzZXJfY2xhaW1zGAMgASgLMiguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ2xhaW1zSAASVgoQcmVzb3VyY2VfZGV0YWlscxgEIAEoCzI6LmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJlc291cmNlRGV0YWlsc0gAQgkKB3JlcXVlc3QiTwoOUmV2b2tlUmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUgoRVXBkYXRlUm9sZVJlcXVlc3QSPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiUwoSVXBkYXRlUm9sZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIl8KFUNyZWF0ZUFQSVRva2VuUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIRCglyb2xlX25hbWUYAyABKAkSDAoEbmFtZRgEIAEoCSJKChZDcmVhdGVBUElUb2tlblJlc3BvbnNlEjAKDHRva2VuX3NlY3JldBgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQiTAoVRGVsZXRlQVBJVG9rZW5SZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkiGAoWRGVsZXRlQVBJVG9rZW5SZXNwb25zZSKGAQoSR2V0QVBJVG9rZW5SZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgBIAEoCBIPCgdwcm9qZWN0GAIgASgJEgwKBG5hbWUYAyABKAkSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImIKE0dldEFQSVRva2VuUmVzcG9uc2USMgoMdG9rZW5fc2VjcmV0GAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJQChRMaXN0QVBJVG9rZW5zUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIRCglyb2xlX25hbWUYAyABKAkiSgoVTGlzdEFQSVRva2Vuc1Jlc3BvbnNlEjEKDXRva2VuX3NlY3JldHMYASADKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0Ik4KFlJlZnJlc2hSZXNvdXJjZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhUKDXJlc291cmNlX3R5cGUYAyABKAkiQQoXUmVmcmVzaFJlc291cmNlUmVzcG9uc2USJgoIcmVzb3VyY2UYASABKAsyFC5nb29nbGUucHJvdG9idWYuQW55KlEKCVJhd0Zvcm1hdBIaChZSQVdfRk9STUFUX1VOU1BFQ0lGSUVEEAASEwoPUkFXX0ZPUk1BVF9KU09OEAESEwoPUkFXX0ZPUk1BVF9ZQU1MEAIy7lkKDEthcmdvU2VydmljZRKDAQoOR2V0VmVyc2lvbkluZm8SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRWZXJzaW9uSW5mb1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRWZXJzaW9uSW5mb1Jlc3BvbnNlEnQKCUdldENvbmZpZxIyLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ1JlcXVlc3QaMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdSZXNwb25zZRKGAQoPR2V0UHVibGljQ29uZmlnEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHVibGljQ29uZmlnUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFB1YmxpY0NvbmZpZ1Jlc3BvbnNlEncKCkFkbWluTG9naW4SMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BZG1pbkxvZ2luUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFkbWluTG9naW5SZXNwb25zZRKDAQoOQ3JlYXRlUmVzb3VyY2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXNvdXJjZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXNvdXJjZVJlc3BvbnNlEpsBChZDcmVhdGVPclVwZGF0ZVJlc291cmNlEj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlcXVlc3QaQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzcG9uc2USgwEKDlVwZGF0ZVJlc291cmNlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXNwb25zZRKDAQoORGVsZXRlUmVzb3VyY2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3BvbnNlEoYBCg9SZWZyZXNoUmVzb3VyY2USOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZWZyZXNoUmVzb3VyY2VSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmVmcmVzaFJlc291cmNlUmVzcG9uc2USdwoKTGlzdFN0YWdlcxIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RTdGFnZXNSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFN0YWdlc1Jlc3BvbnNlEo8BChJMaXN0U3RhZ2VTdW1tYXJpZXMSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VTdW1tYXJpZXNSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFN0YWdlU3VtbWFyaWVzUmVzcG9uc2USdwoKTGlzdEltYWdlcxIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RJbWFnZXNSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1Jlc3BvbnNlEnEKCEdldFN0YWdlEjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VSZXF1ZXN0GjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VSZXNwb25zZRKYAQoVR2V0U3RhZ2VIZWFsdGhPdXRwdXRzEj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VIZWFsdGhPdXRwdXRzUmVxdWVzdBo/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFN0YWdlSGVhbHRoT3V0cHV0c1Jlc3BvbnNlEnwKC1dhdGNoU3RhZ2VzEjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZXNSZXF1ZXN0GjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZXNSZXNwb25zZTABEpQBChNXYXRjaFN0YWdlU3VtbWFyaWVzEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hTdGFnZVN1bW1hcmllc1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFN0YWdlU3VtbWFyaWVzUmVzcG9uc2UwARJ6CgtEZWxldGVTdGFnZRI0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVN0YWdlUmVxdWVzdBo1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVN0YWdlUmVzcG9uc2USiQEKEEdldENsdXN0ZXJDb25maWcSOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQ29uZmlnUmVxdWVzdBo6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENsdXN0ZXJDb25maWdSZXNwb25zZRKSAQoTRGVsZXRlQ2x1c3RlckNvbmZpZxI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJDb25maWdSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlEpEBChJXYXRjaENsdXN0ZXJDb25maWcSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaENsdXN0ZXJDb25maWdSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hDbHVzdGVyQ29uZmlnUmVzcG9uc2UwARKDAQoOTGlzdFByb21vdGlvbnMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uc1Jlc3BvbnNlEogBCg9XYXRjaFByb21vdGlvbnMSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb21vdGlvbnNSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25zUmVzcG9uc2UwARJ9CgxHZXRQcm9tb3Rpb24SNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25SZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uUmVzcG9uc2UShQEKDldhdGNoUHJvbW90aW9uEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25SZXNwb25zZTABEoMBCg5BYm9ydFByb21vdGlvbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0UHJvbW90aW9uUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0UHJvbW90aW9uUmVzcG9uc2USgAEKDURlbGV0ZVByb2plY3QSNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0UmVxdWVzdBo3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RSZXNwb25zZRJ3CgpHZXRQcm9qZWN0EjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdFJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9qZWN0UmVzcG9uc2USfQoMTGlzdFByb2plY3RzEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RzUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0c1Jlc3BvbnNlEokBChBHZXRQcm9qZWN0Q29uZmlnEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdENvbmZpZ1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9qZWN0Q29uZmlnUmVzcG9uc2USkgEKE0RlbGV0ZVByb2plY3RDb25maWcSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0Q29uZmlnUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVByb2plY3RDb25maWdSZXNwb25zZRKRAQoSV2F0Y2hQcm9qZWN0Q29uZmlnEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9qZWN0Q29uZmlnUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvamVjdENvbmZpZ1Jlc3BvbnNlMAESgwEKDkFwcHJvdmVGcmVpZ2h0EjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQXBwcm92ZUZyZWlnaHRSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQXBwcm92ZUZyZWlnaHRSZXNwb25zZRKAAQoNRGVsZXRlRnJlaWdodBI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUZyZWlnaHRSZXF1ZXN0GjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlRnJlaWdodFJlc3BvbnNlEncKCkdldEZyZWlnaHQSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRGcmVpZ2h0UmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEZyZWlnaHRSZXNwb25zZRJ/CgxXYXRjaEZyZWlnaHQSNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaEZyZWlnaHRSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hGcmVpZ2h0UmVzcG9uc2UwARKDAQoOUHJvbW90ZVRvU3RhZ2USNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlVG9TdGFnZVJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlVG9TdGFnZVJlc3BvbnNlEowBChFQcm9tb3RlRG93bnN0cmVhbRI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVEb3duc3RyZWFtUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlByb21vdGVEb3duc3RyZWFtUmVzcG9uc2USfQoMUXVlcnlGcmVpZ2h0EjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUXVlcnlGcmVpZ2h0UmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlc3BvbnNlEo8BChJVcGRhdGVGcmVpZ2h0QWxpYXMSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVGcmVpZ2h0QWxpYXNSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlRnJlaWdodEFsaWFzUmVzcG9uc2UScQoIUmV2ZXJpZnkSMS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZlcmlmeVJlcXVlc3QaMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZlcmlmeVJlc3BvbnNlEowBChFBYm9ydFZlcmlmaWNhdGlvbhI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0VmVyaWZpY2F0aW9uUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFib3J0VmVyaWZpY2F0aW9uUmVzcG9uc2USgwEKDkxpc3RXYXJlaG91c2VzEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFdhcmVob3VzZXNSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFdhcmVob3VzZXNSZXNwb25zZRJ9CgxHZXRXYXJlaG91c2USNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRXYXJlaG91c2VSZXF1ZXN0GjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0V2FyZWhvdXNlUmVzcG9uc2USiAEKD1dhdGNoV2FyZWhvdXNlcxI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoV2FyZWhvdXNlc1JlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFdhcmVob3VzZXNSZXNwb25zZTABEoYBCg9EZWxldGVXYXJlaG91c2USOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVXYXJlaG91c2VSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlV2FyZWhvdXNlUmVzcG9uc2USmAEKFUNyZWF0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKYAQoVRGVsZXRlUmVwb0NyZWRlbnRpYWxzEj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEo8BChJHZXRSZXBvQ3JlZGVudGlhbHMSOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0GjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USkgEKE0xpc3RSZXBvQ3JlZGVudGlhbHMSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKYAQoVVXBkYXRlUmVwb0NyZWRlbnRpYWxzEj4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEpsBChZMaXN0R2VuZXJpY0NyZWRlbnRpYWxzEj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0R2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USoQEKGENyZWF0ZUdlbmVyaWNDcmVkZW50aWFscxJBLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRKhAQoYVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzEkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBpCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEqEBChhEZWxldGVHZW5lcmljQ3JlZGVudGlhbHMSQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2UShgEKD0NyZWF0ZUNvbmZpZ01hcBI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZUNvbmZpZ01hcFJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVDb25maWdNYXBSZXNwb25zZRKGAQoPRGVsZXRlQ29uZmlnTWFwEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQ29uZmlnTWFwUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNvbmZpZ01hcFJlc3BvbnNlEoMBCg5MaXN0Q29uZmlnTWFwcxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDb25maWdNYXBzUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDb25maWdNYXBzUmVzcG9uc2USfQoMR2V0Q29uZmlnTWFwEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnTWFwUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ01hcFJlc3BvbnNlEoYBCg9VcGRhdGVDb25maWdNYXASOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVDb25maWdNYXBSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVzcG9uc2USmAEKFUxpc3RBbmFseXNpc1RlbXBsYXRlcxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRKSAQoTR2V0QW5hbHlzaXNUZW1wbGF0ZRI8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0Gj0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEpsBChZEZWxldGVBbmFseXNpc1RlbXBsYXRlEj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USrQEKHExpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXMSRS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVxdWVzdBpGLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRKnAQoaR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGUSQy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaRC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlErABCh1EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZRJGLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBpHLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2USgwEKDkdldEFuYWx5c2lzUnVuEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5SZXNwb25zZRKRAQoSR2V0QW5hbHlzaXNSdW5Mb2dzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QW5hbHlzaXNSdW5Mb2dzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuTG9nc1Jlc3BvbnNlMAESjAEKEUxpc3RQcm9qZWN0RXZlbnRzEjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RFdmVudHNSZXF1ZXN0GjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb2plY3RFdmVudHNSZXNwb25zZRKPAQoSTGlzdFByb21vdGlvblRhc2tzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvblRhc2tzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEqQBChlMaXN0Q2x1c3RlclByb21vdGlvblRhc2tzEkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1JlcXVlc3QaQy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVzcG9uc2USiQEKEEdldFByb21vdGlvblRhc2sSOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25UYXNrUmVxdWVzdBo6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblRhc2tSZXNwb25zZRKeAQoXR2V0Q2x1c3RlclByb21vdGlvblRhc2sSQC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyUHJvbW90aW9uVGFza1JlcXVlc3QaQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyUHJvbW90aW9uVGFza1Jlc3BvbnNlEncKCkNyZWF0ZVJvbGUSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSb2xlUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJvbGVSZXNwb25zZRJ3CgpEZWxldGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSb2xlUmVzcG9uc2USbgoHR2V0Um9sZRIwLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJvbGVSZXF1ZXN0GjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Um9sZVJlc3BvbnNlEmgKBUdyYW50Ei4uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR3JhbnRSZXF1ZXN0Gi8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR3JhbnRSZXNwb25zZRJ0CglMaXN0Um9sZXMSMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Um9sZXNSZXF1ZXN0GjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJvbGVzUmVzcG9uc2USawoGUmV2b2tlEi8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2b2tlUmVxdWVzdBowLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldm9rZVJlc3BvbnNlEncKClVwZGF0ZVJvbGUSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSb2xlUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJvbGVSZXNwb25zZRKDAQoOQ3JlYXRlQVBJVG9rZW4SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVBUElUb2tlblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVBUElUb2tlblJlc3BvbnNlEoMBCg5EZWxldGVBUElUb2tlbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFQSVRva2VuUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFQSVRva2VuUmVzcG9uc2USegoLR2V0QVBJVG9rZW4SNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBUElUb2tlblJlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBUElUb2tlblJlc3BvbnNlEoABCg1MaXN0QVBJVG9rZW5zEjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFQSVRva2Vuc1JlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QVBJVG9rZW5zUmVzcG9uc2VCkwIKJGNvbS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMUIMU2VydmljZVByb3RvUAFaOGdpdGh1Yi5jb20vYWt1aXR5L2thcmdvL2FwaS9zZXJ2aWNlL3YxYWxwaGExO3N2Y3YxYWxwaGExogIEQUlLU6oCIEFrdWl0eS5Jby5LYXJnby5TZXJ2aWNlLlYxYWxwaGExygIgQWt1aXR5XElvXEthcmdvXFNlcnZpY2VcVjFhbHBoYTHiAixBa3VpdHlcSW9cS2FyZ29cU2VydmljZVxWMWFscGhhMVxHUEJNZXRhZGF0YeoCJEFrdWl0eTo6SW86OkthcmdvOjpTZXJ2aWNlOjpWMWFscGhhMWIGcHJvdG8z", [file_google_protobuf_timestamp, file_api_v1alpha1_generated, file_k8s_io_api_core_v1_generated, file_k8s_io_apimachinery_pkg_apis_meta_v1_generated, file_api_stubs_rollouts_v1alpha1_generated, file_api_rbac_v1alpha1_generated, file_google_protobuf_any]); + fileDesc("CiJhcGkvc2VydmljZS92MWFscGhhMS9zZXJ2aWNlLnByb3RvEiBha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMSKrAQoRQ29tcG9uZW50VmVyc2lvbnMSQgoGc2VydmVyGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm9IAIgBARI/CgNjbGkYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5WZXJzaW9uSW5mb0gBiAEBQgkKB19zZXJ2ZXJCBgoEX2NsaSKyAQoLVmVyc2lvbkluZm8SDwoHdmVyc2lvbhgBIAEoCRISCgpnaXRfY29tbWl0GAIgASgJEhYKDmdpdF90cmVlX2RpcnR5GAMgASgIEi4KCmJ1aWxkX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdvX3ZlcnNpb24YBSABKAkSEAoIY29tcGlsZXIYBiABKAkSEAoIcGxhdGZvcm0YByABKAkiFwoVR2V0VmVyc2lvbkluZm9SZXF1ZXN0Il0KFkdldFZlcnNpb25JbmZvUmVzcG9uc2USQwoMdmVyc2lvbl9pbmZvGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm8iEgoQR2V0Q29uZmlnUmVxdWVzdCItCgtBcmdvQ0RTaGFyZBILCgN1cmwYASABKAkSEQoJbmFtZXNwYWNlGAIgASgJIsgCChFHZXRDb25maWdSZXNwb25zZRJcCg1hcmdvY2Rfc2hhcmRzGAEgAygLMkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UuQXJnb2NkU2hhcmRzRW50cnkSIQoZc2VjcmV0X21hbmFnZW1lbnRfZW5hYmxlZBgCIAEoCBIiChpzeXN0ZW1fcmVzb3VyY2VzX25hbWVzcGFjZRgDIAEoCRIqCiJoYXNfYW5hbHlzaXNfcnVuX2xvZ3NfdXJsX3RlbXBsYXRlGAQgASgIGmIKEUFyZ29jZFNoYXJkc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFyZ29DRFNoYXJkOgI4ASIYChZHZXRQdWJsaWNDb25maWdSZXF1ZXN0Io4BChdHZXRQdWJsaWNDb25maWdSZXNwb25zZRJBCgtvaWRjX2NvbmZpZxgBIAEoCzIsLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLk9JRENDb25maWcSHQoVYWRtaW5fYWNjb3VudF9lbmFibGVkGAIgASgIEhEKCXNraXBfYXV0aBgDIAEoCCJaCgpPSURDQ29uZmlnEhIKCmlzc3Vlcl91cmwYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1jbGlfY2xpZW50X2lkGAQgASgJIiUKEUFkbWluTG9naW5SZXF1ZXN0EhAKCHBhc3N3b3JkGAEgASgJIiYKEkFkbWluTG9naW5SZXNwb25zZRIQCghpZF90b2tlbhgBIAEoCSIpChVDcmVhdGVSZXNvdXJjZVJlcXVlc3QSEAoIbWFuaWZlc3QYASABKAwiVgoUQ3JlYXRlUmVzb3VyY2VSZXN1bHQSIwoZY3JlYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgBIAEoDEgAEg8KBWVycm9yGAIgASgJSABCCAoGcmVzdWx0ImEKFkNyZWF0ZVJlc291cmNlUmVzcG9uc2USRwoHcmVzdWx0cxgBIAMoCzI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzdWx0IjEKHUNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIoMBChxDcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0EiMKGWNyZWF0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAIgASgMSAASDwoFZXJyb3IYAyABKAlIAEIICgZyZXN1bHQicQoeQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEk8KB3Jlc3VsdHMYASADKAsyPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0IikKFVVwZGF0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCJWChRVcGRhdGVSZXNvdXJjZVJlc3VsdBIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASDwoFZXJyb3IYAiABKAlIAEIICgZyZXN1bHQiYQoWVXBkYXRlUmVzb3VyY2VSZXNwb25zZRJHCgdyZXN1bHRzGAEgAygLMjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXN1bHQiKQoVRGVsZXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIlYKFERlbGV0ZVJlc291cmNlUmVzdWx0EiMKGWRlbGV0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIPCgVlcnJvchgCIAEoCUgAQggKBnJlc3VsdCJhChZEZWxldGVSZXNvdXJjZVJlc3BvbnNlEkcKB3Jlc3VsdHMYASADKAsyNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3VsdCJOChFMaXN0U3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEhcKD2ZyZWlnaHRfb3JpZ2lucxgCIAMoCRIPCgdzdW1tYXJ5GAMgASgIImsKEkxpc3RTdGFnZXNSZXNwb25zZRI7CgZzdGFnZXMYASADKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2USGAoQcmVzb3VyY2VfdmVyc2lvbhgCIAEoCSIkChFMaXN0SW1hZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIr8BChJMaXN0SW1hZ2VzUmVzcG9uc2USUAoGaW1hZ2VzGAIgAygLMkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1Jlc3BvbnNlLkltYWdlc0VudHJ5GlcKC0ltYWdlc0VudHJ5EgsKA2tleRgBIAEoCRI3CgV2YWx1ZRgCIAEoCzIoLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlRhZ01hcDoCOAEiqAEKBlRhZ01hcBJACgR0YWdzGAEgAygLMjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVGFnTWFwLlRhZ3NFbnRyeRpcCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEj4KBXZhbHVlGAIgASgLMi8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuSW1hZ2VTdGFnZU1hcDoCOAEiiwEKDUltYWdlU3RhZ2VNYXASSwoGc3RhZ2VzGAEgAygLMjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuSW1hZ2VTdGFnZU1hcC5TdGFnZXNFbnRyeRotCgtTdGFnZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBIm0KD0dldFN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImkKEEdldFN0YWdlUmVzcG9uc2USPAoFc3RhZ2UYASABKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2VIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiRAocR2V0U3RhZ2VIZWFsdGhPdXRwdXRzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEhMKC3N0YWdlX25hbWVzGAIgAygJIsEBCh1HZXRTdGFnZUhlYWx0aE91dHB1dHNSZXNwb25zZRJqCg5oZWFsdGhfb3V0cHV0cxgBIAMoCzJSLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFN0YWdlSGVhbHRoT3V0cHV0c1Jlc3BvbnNlLkhlYWx0aE91dHB1dHNFbnRyeRo0ChJIZWFsdGhPdXRwdXRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgMOgI4ASJ3ChJXYXRjaFN0YWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhcKD2ZyZWlnaHRfb3JpZ2lucxgDIAMoCRIPCgdzdW1tYXJ5GAQgASgIEhgKEHJlc291cmNlX3ZlcnNpb24YBSABKAkiXwoTV2F0Y2hTdGFnZXNSZXNwb25zZRI6CgVzdGFnZRgBIAEoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZRIMCgR0eXBlGAIgASgJIjMKEkRlbGV0ZVN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiFQoTRGVsZXRlU3RhZ2VSZXNwb25zZSJWChdHZXRDbHVzdGVyQ29uZmlnUmVxdWVzdBI7CgZmb3JtYXQYASABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiggEKGEdldENsdXN0ZXJDb25maWdSZXNwb25zZRJNCg5jbHVzdGVyX2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyQ29uZmlnSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IhwKGkRlbGV0ZUNsdXN0ZXJDb25maWdSZXF1ZXN0Ih0KG0RlbGV0ZUNsdXN0ZXJDb25maWdSZXNwb25zZSIbChlXYXRjaENsdXN0ZXJDb25maWdSZXF1ZXN0IncKGldhdGNoQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlEksKDmNsdXN0ZXJfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJDb25maWcSDAoEdHlwZRgCIAEoCSJGChVMaXN0UHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJdChZMaXN0UHJvbW90aW9uc1Jlc3BvbnNlEkMKCnByb21vdGlvbnMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uIkcKFldhdGNoUHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJrChdXYXRjaFByb21vdGlvbnNSZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uEgwKBHR5cGUYAiABKAkicQoTR2V0UHJvbW90aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0InUKFEdldFByb21vdGlvblJlc3BvbnNlEkQKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25IABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNgoVV2F0Y2hQcm9tb3Rpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJqChZXYXRjaFByb21vdGlvblJlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24SDAoEdHlwZRgCIAEoCSI2ChVBYm9ydFByb21vdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhgKFkFib3J0UHJvbW90aW9uUmVzcG9uc2UiJAoURGVsZXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCSIXChVEZWxldGVQcm9qZWN0UmVzcG9uc2UiXgoRR2V0UHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRI7CgZmb3JtYXQYAiABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQibwoSR2V0UHJvamVjdFJlc3BvbnNlEkAKB3Byb2plY3QYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCKgAQoTTGlzdFByb2plY3RzUmVxdWVzdBIWCglwYWdlX3NpemUYASABKAVIAIgBARIRCgRwYWdlGAIgASgFSAGIAQESEwoGZmlsdGVyGAMgASgJSAKIAQESCwoDdWlkGAQgAygJEhEKBG1pbmUYBSABKAhIA4gBAUIMCgpfcGFnZV9zaXplQgcKBV9wYWdlQgkKB19maWx0ZXJCBwoFX21pbmUiZgoUTGlzdFByb2plY3RzUmVzcG9uc2USPwoIcHJvamVjdHMYASADKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdBINCgV0b3RhbBgCIAEoBSJnChdHZXRQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEjsKBmZvcm1hdBgCIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKCAQoYR2V0UHJvamVjdENvbmZpZ1Jlc3BvbnNlEk0KDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWdIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiLQoaRGVsZXRlUHJvamVjdENvbmZpZ1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSIdChtEZWxldGVQcm9qZWN0Q29uZmlnUmVzcG9uc2UiLAoZV2F0Y2hQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIncKGldhdGNoUHJvamVjdENvbmZpZ1Jlc3BvbnNlEksKDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWcSDAoEdHlwZRgCIAEoCSJUChVBcHByb3ZlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJEg0KBXN0YWdlGAQgASgJIhgKFkFwcHJvdmVGcmVpZ2h0UmVzcG9uc2UiRAoURGVsZXRlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJIhcKFURlbGV0ZUZyZWlnaHRSZXNwb25zZSJ+ChFHZXRGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWxpYXMYAyABKAkSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0Im8KEkdldEZyZWlnaHRSZXNwb25zZRJACgdmcmVpZ2h0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNwoTV2F0Y2hGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg8KB29yaWdpbnMYAiADKAkiZAoUV2F0Y2hGcmVpZ2h0UmVzcG9uc2USPgoHZnJlaWdodBgBIAEoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0EgwKBHR5cGUYAiABKAkiXwoVUHJvbW90ZVRvU3RhZ2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkSDwoHZnJlaWdodBgDIAEoCRIVCg1mcmVpZ2h0X2FsaWFzGAQgASgJIlwKFlByb21vdGVUb1N0YWdlUmVzcG9uc2USQgoJcHJvbW90aW9uGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbiJiChhQcm9tb3RlRG93bnN0cmVhbVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCRIPCgdmcmVpZ2h0GAMgASgJEhUKDWZyZWlnaHRfYWxpYXMYBCABKAkiYAoZUHJvbW90ZURvd25zdHJlYW1SZXNwb25zZRJDCgpwcm9tb3Rpb25zGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbiKKAQoTUXVlcnlGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJEhAKCGdyb3VwX2J5GAMgASgJEg0KBWdyb3VwGAQgASgJEhAKCG9yZGVyX2J5GAUgASgJEg8KB3JldmVyc2UYBiABKAgSDwoHb3JpZ2lucxgHIAMoCSLIAQoUUXVlcnlGcmVpZ2h0UmVzcG9uc2USUgoGZ3JvdXBzGAEgAygLMkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUXVlcnlGcmVpZ2h0UmVzcG9uc2UuR3JvdXBzRW50cnkaXAoLR3JvdXBzRW50cnkSCwoDa2V5GAEgASgJEjwKBXZhbHVlGAIgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRnJlaWdodExpc3Q6AjgBIk0KC0ZyZWlnaHRMaXN0Ej4KB2ZyZWlnaHQYASADKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodCJgChlVcGRhdGVGcmVpZ2h0QWxpYXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRIRCglvbGRfYWxpYXMYAyABKAkSEQoJbmV3X2FsaWFzGAQgASgJIhwKGlVwZGF0ZUZyZWlnaHRBbGlhc1Jlc3BvbnNlIjEKD1JldmVyaWZ5UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJIhIKEFJldmVyaWZ5UmVzcG9uc2UiOgoYQWJvcnRWZXJpZmljYXRpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkiGwoZQWJvcnRWZXJpZmljYXRpb25SZXNwb25zZSIoChVMaXN0V2FyZWhvdXNlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJdChZMaXN0V2FyZWhvdXNlc1Jlc3BvbnNlEkMKCndhcmVob3VzZXMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlInEKE0dldFdhcmVob3VzZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJ1ChRHZXRXYXJlaG91c2VSZXNwb25zZRJECgl3YXJlaG91c2UYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjcKFldhdGNoV2FyZWhvdXNlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJImsKF1dhdGNoV2FyZWhvdXNlc1Jlc3BvbnNlEkIKCXdhcmVob3VzZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5XYXJlaG91c2USDAoEdHlwZRgCIAEoCSI3ChZEZWxldGVXYXJlaG91c2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIZChdEZWxldGVXYXJlaG91c2VSZXNwb25zZSL0AQoWQ3JlYXRlQ29uZmlnTWFwUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJElAKBGRhdGEYBSADKAsyQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVDb25maWdNYXBSZXF1ZXN0LkRhdGFFbnRyeRIRCglyZXBsaWNhdGUYBiABKAgaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiTAoXQ3JlYXRlQ29uZmlnTWFwUmVzcG9uc2USMQoKY29uZmlnX21hcBgBIAEoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXAiTQoWRGVsZXRlQ29uZmlnTWFwUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJIhkKF0RlbGV0ZUNvbmZpZ01hcFJlc3BvbnNlIj4KFUxpc3RDb25maWdNYXBzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAiABKAgSDwoHcHJvamVjdBgBIAEoCSJMChZMaXN0Q29uZmlnTWFwc1Jlc3BvbnNlEjIKC2NvbmZpZ19tYXBzGAEgAygLMh0uazhzLmlvLmFwaS5jb3JlLnYxLkNvbmZpZ01hcCKHAQoTR2V0Q29uZmlnTWFwUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYBCABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJkChRHZXRDb25maWdNYXBSZXNwb25zZRIzCgpjb25maWdfbWFwGAEgASgLMh0uazhzLmlvLmFwaS5jb3JlLnYxLkNvbmZpZ01hcEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCL0AQoWVXBkYXRlQ29uZmlnTWFwUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJElAKBGRhdGEYBSADKAsyQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVDb25maWdNYXBSZXF1ZXN0LkRhdGFFbnRyeRIRCglyZXBsaWNhdGUYBiABKAgaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiTAoXVXBkYXRlQ29uZmlnTWFwUmVzcG9uc2USMQoKY29uZmlnX21hcBgBIAEoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXAiygEKHENyZWF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAggASgJEgwKBHR5cGUYAyABKAkSGQoIcmVwb191cmwYBCABKAlSB3JlcG9VUkwSKQoRcmVwb191cmxfaXNfcmVnZXgYBSABKAhSDnJlcG9VUkxJc1JlZ2V4EhAKCHVzZXJuYW1lGAYgASgJEhAKCHBhc3N3b3JkGAcgASgJIlAKHUNyZWF0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCI9ChxEZWxldGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIfCh1EZWxldGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZSJ3ChlHZXRSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiaAoaR2V0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USMQoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0Ii0KGkxpc3RSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiTgobTGlzdFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgAygLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCLKAQocVXBkYXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YCCABKAkSDAoEdHlwZRgDIAEoCRIZCghyZXBvX3VybBgEIAEoCVIHcmVwb1VSTBIpChFyZXBvX3VybF9pc19yZWdleBgFIAEoCFIOcmVwb1VSTElzUmVnZXgSEAoIdXNlcm5hbWUYBiABKAkSEAoIcGFzc3dvcmQYByABKAkiUAodVXBkYXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IkYKHUxpc3RHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgCIAEoCBIPCgdwcm9qZWN0GAEgASgJIlEKHkxpc3RHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQihgIKH0NyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAYgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRJZCgRkYXRhGAQgAygLMksuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAUgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlMKIENyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCKGAgofVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYBiABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJElkKBGRhdGEYBCADKAsySy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0LkRhdGFFbnRyeRIRCglyZXBsaWNhdGUYBSABKAgaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiUwogVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IlYKH0RlbGV0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAMgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIiCiBEZWxldGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZSIvChxMaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiggEKHUxpc3RBbmFseXNpc1RlbXBsYXRlc1Jlc3BvbnNlEmEKEmFuYWx5c2lzX3RlbXBsYXRlcxgBIAMoCzJFLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5BbmFseXNpc1RlbXBsYXRlIngKGkdldEFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQimgEKG0dldEFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRJiChFhbmFseXNpc190ZW1wbGF0ZRgBIAEoCzJFLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5BbmFseXNpc1RlbXBsYXRlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0Ij4KHURlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIgCh5EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2UiJQojTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QiswEKJExpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRKKAQoaY2x1c3Rlcl9hbmFseXNpc190ZW1wbGF0ZXMYASADKAsyTC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSGGNsdXN0ZXJhbmFseXNpc1RlbXBsYXRlcyJuCiFHZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQisAEKIkdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2UScQoZY2x1c3Rlcl9hbmFseXNpc190ZW1wbGF0ZRgBIAEoCzJMLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5DbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI0CiREZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDAoEbmFtZRgCIAEoCSInCiVEZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlInUKFUdldEFuYWx5c2lzUnVuUmVxdWVzdBIRCgluYW1lc3BhY2UYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiiwEKFkdldEFuYWx5c2lzUnVuUmVzcG9uc2USWAoMYW5hbHlzaXNfcnVuGAEgASgLMkAuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkFuYWx5c2lzUnVuSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0ImkKGUdldEFuYWx5c2lzUnVuTG9nc1JlcXVlc3QSEQoJbmFtZXNwYWNlGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLbWV0cmljX25hbWUYAyABKAkSFgoOY29udGFpbmVyX25hbWUYBCABKAkiKwoaR2V0QW5hbHlzaXNSdW5Mb2dzUmVzcG9uc2USDQoFY2h1bmsYASABKAkiKwoYTGlzdFByb2plY3RFdmVudHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiRgoZTGlzdFByb2plY3RFdmVudHNSZXNwb25zZRIpCgZldmVudHMYASADKAsyGS5rOHMuaW8uYXBpLmNvcmUudjEuRXZlbnQiLAoZTGlzdFByb21vdGlvblRhc2tzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJImoKGkxpc3RQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEkwKD3Byb21vdGlvbl90YXNrcxgBIAMoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25UYXNrInUKF0dldFByb21vdGlvblRhc2tSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiggEKGEdldFByb21vdGlvblRhc2tSZXNwb25zZRJNCg5wcm9tb3Rpb25fdGFzaxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25UYXNrSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IiIKIExpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXF1ZXN0IoABCiFMaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVzcG9uc2USWwoXY2x1c3Rlcl9wcm9tb3Rpb25fdGFza3MYASADKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2x1c3RlclByb21vdGlvblRhc2siawoeR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXF1ZXN0EgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IqYBCh9HZXRDbHVzdGVyUHJvbW90aW9uVGFza1Jlc3BvbnNlEmoKDnByb21vdGlvbl90YXNrGAEgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJQcm9tb3Rpb25UYXNrSABSFGNsdXN0ZXJQcm9tb3Rpb25UYXNrEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJSChFDcmVhdGVSb2xlUmVxdWVzdBI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJTChJDcmVhdGVSb2xlUmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiMgoRRGVsZXRlUm9sZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhQKEkRlbGV0ZVJvbGVSZXNwb25zZSKYAQoOR2V0Um9sZVJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAUgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRIUCgxhc19yZXNvdXJjZXMYAyABKAgSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IroBCg9HZXRSb2xlUmVzcG9uc2USPwoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGVIABJNCglyZXNvdXJjZXMYAiABKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlUmVzb3VyY2VzSAASDQoDcmF3GAMgASgMSABCCAoGcmVzdWx0IkoKBkNsYWltcxJACgZjbGFpbXMYASADKAsyMC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5DbGFpbSLRAQoMR3JhbnRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEcm9sZRgCIAEoCRI/Cgt1c2VyX2NsYWltcxgDIAEoCzIoLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNsYWltc0gAElYKEHJlc291cmNlX2RldGFpbHMYBCABKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5SZXNvdXJjZURldGFpbHNIAEIJCgdyZXF1ZXN0Ik4KDUdyYW50UmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiTwoQTGlzdFJvbGVzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAyABKAgSDwoHcHJvamVjdBgBIAEoCRIUCgxhc19yZXNvdXJjZXMYAiABKAgioAEKEUxpc3RSb2xlc1Jlc3BvbnNlEj4KBXJvbGVzGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZRJLCglyZXNvdXJjZXMYAiADKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlUmVzb3VyY2VzItIBCg1SZXZva2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEcm9sZRgCIAEoCRI/Cgt1c2VyX2NsYWltcxgDIAEoCzIoLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNsYWltc0gAElYKEHJlc291cmNlX2RldGFpbHMYBCABKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5SZXNvdXJjZURldGFpbHNIAEIJCgdyZXF1ZXN0Ik8KDlJldm9rZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIlIKEVVwZGF0ZVJvbGVSZXF1ZXN0Ej0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIlMKElVwZGF0ZVJvbGVSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJfChVDcmVhdGVBUElUb2tlblJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSEQoJcm9sZV9uYW1lGAMgASgJEgwKBG5hbWUYBCABKAkiSgoWQ3JlYXRlQVBJVG9rZW5SZXNwb25zZRIwCgx0b2tlbl9zZWNyZXQYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IkwKFURlbGV0ZUFQSVRva2VuUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJIhgKFkRlbGV0ZUFQSVRva2VuUmVzcG9uc2UihgEKEkdldEFQSVRva2VuUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJEjsKBmZvcm1hdBgEIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJiChNHZXRBUElUb2tlblJlc3BvbnNlEjIKDHRva2VuX3NlY3JldBgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiUAoUTGlzdEFQSVRva2Vuc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSEQoJcm9sZV9uYW1lGAMgASgJIkoKFUxpc3RBUElUb2tlbnNSZXNwb25zZRIxCg10b2tlbl9zZWNyZXRzGAEgAygLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJOChZSZWZyZXNoUmVzb3VyY2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRIVCg1yZXNvdXJjZV90eXBlGAMgASgJIkEKF1JlZnJlc2hSZXNvdXJjZVJlc3BvbnNlEiYKCHJlc291cmNlGAEgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueSpRCglSYXdGb3JtYXQSGgoWUkFXX0ZPUk1BVF9VTlNQRUNJRklFRBAAEhMKD1JBV19GT1JNQVRfSlNPThABEhMKD1JBV19GT1JNQVRfWUFNTBACMsVXCgxLYXJnb1NlcnZpY2USgwEKDkdldFZlcnNpb25JbmZvEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0VmVyc2lvbkluZm9SZXNwb25zZRJ0CglHZXRDb25maWcSMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdSZXF1ZXN0GjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UShgEKD0dldFB1YmxpY0NvbmZpZxI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFB1YmxpY0NvbmZpZ1JlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQdWJsaWNDb25maWdSZXNwb25zZRJ3CgpBZG1pbkxvZ2luEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWRtaW5Mb2dpblJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BZG1pbkxvZ2luUmVzcG9uc2USgwEKDkNyZWF0ZVJlc291cmNlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVzb3VyY2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVzb3VyY2VSZXNwb25zZRKbAQoWQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZRI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEoMBCg5VcGRhdGVSZXNvdXJjZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlc291cmNlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlc291cmNlUmVzcG9uc2USgwEKDkRlbGV0ZVJlc291cmNlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVzb3VyY2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVzb3VyY2VSZXNwb25zZRKGAQoPUmVmcmVzaFJlc291cmNlEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmVmcmVzaFJlc291cmNlUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJlZnJlc2hSZXNvdXJjZVJlc3BvbnNlEncKCkxpc3RTdGFnZXMSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VzUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RTdGFnZXNSZXNwb25zZRJ3CgpMaXN0SW1hZ2VzEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1JlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0SW1hZ2VzUmVzcG9uc2UScQoIR2V0U3RhZ2USMS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlcXVlc3QaMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlc3BvbnNlEpgBChVHZXRTdGFnZUhlYWx0aE91dHB1dHMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZUhlYWx0aE91dHB1dHNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VIZWFsdGhPdXRwdXRzUmVzcG9uc2USfAoLV2F0Y2hTdGFnZXMSNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFN0YWdlc1JlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFN0YWdlc1Jlc3BvbnNlMAESegoLRGVsZXRlU3RhZ2USNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVTdGFnZVJlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVTdGFnZVJlc3BvbnNlEokBChBHZXRDbHVzdGVyQ29uZmlnEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckNvbmZpZ1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQ29uZmlnUmVzcG9uc2USkgEKE0RlbGV0ZUNsdXN0ZXJDb25maWcSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQ29uZmlnUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJDb25maWdSZXNwb25zZRKRAQoSV2F0Y2hDbHVzdGVyQ29uZmlnEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hDbHVzdGVyQ29uZmlnUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlMAESgwEKDkxpc3RQcm9tb3Rpb25zEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvbnNSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvbnNSZXNwb25zZRKIAQoPV2F0Y2hQcm9tb3Rpb25zEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25zUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uc1Jlc3BvbnNlMAESfQoMR2V0UHJvbW90aW9uEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblJlc3BvbnNlEoUBCg5XYXRjaFByb21vdGlvbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uUmVzcG9uc2UwARKDAQoOQWJvcnRQcm9tb3Rpb24SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFByb21vdGlvblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFByb21vdGlvblJlc3BvbnNlEoABCg1EZWxldGVQcm9qZWN0EjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdFJlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0UmVzcG9uc2USdwoKR2V0UHJvamVjdBIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdFJlc3BvbnNlEn0KDExpc3RQcm9qZWN0cxI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0c1JlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvamVjdHNSZXNwb25zZRKJAQoQR2V0UHJvamVjdENvbmZpZxI5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RDb25maWdSZXF1ZXN0GjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdENvbmZpZ1Jlc3BvbnNlEpIBChNEZWxldGVQcm9qZWN0Q29uZmlnEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdENvbmZpZ1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0Q29uZmlnUmVzcG9uc2USkQEKEldhdGNoUHJvamVjdENvbmZpZxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvamVjdENvbmZpZ1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb2plY3RDb25maWdSZXNwb25zZTABEoMBCg5BcHByb3ZlRnJlaWdodBI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFwcHJvdmVGcmVpZ2h0UmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFwcHJvdmVGcmVpZ2h0UmVzcG9uc2USgAEKDURlbGV0ZUZyZWlnaHQSNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVGcmVpZ2h0UmVxdWVzdBo3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUZyZWlnaHRSZXNwb25zZRJ3CgpHZXRGcmVpZ2h0EjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0RnJlaWdodFJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRGcmVpZ2h0UmVzcG9uc2USfwoMV2F0Y2hGcmVpZ2h0EjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hGcmVpZ2h0UmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoRnJlaWdodFJlc3BvbnNlMAESgwEKDlByb21vdGVUb1N0YWdlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZVRvU3RhZ2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZVRvU3RhZ2VSZXNwb25zZRKMAQoRUHJvbW90ZURvd25zdHJlYW0SOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlRG93bnN0cmVhbVJlcXVlc3QaOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlRG93bnN0cmVhbVJlc3BvbnNlEn0KDFF1ZXJ5RnJlaWdodBI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5RdWVyeUZyZWlnaHRSZXNwb25zZRKPAQoSVXBkYXRlRnJlaWdodEFsaWFzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlRnJlaWdodEFsaWFzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUZyZWlnaHRBbGlhc1Jlc3BvbnNlEnEKCFJldmVyaWZ5EjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2ZXJpZnlSZXF1ZXN0GjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2ZXJpZnlSZXNwb25zZRKMAQoRQWJvcnRWZXJpZmljYXRpb24SOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFZlcmlmaWNhdGlvblJlcXVlc3QaOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFZlcmlmaWNhdGlvblJlc3BvbnNlEoMBCg5MaXN0V2FyZWhvdXNlcxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RXYXJlaG91c2VzUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RXYXJlaG91c2VzUmVzcG9uc2USfQoMR2V0V2FyZWhvdXNlEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0V2FyZWhvdXNlUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFdhcmVob3VzZVJlc3BvbnNlEogBCg9XYXRjaFdhcmVob3VzZXMSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFdhcmVob3VzZXNSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hXYXJlaG91c2VzUmVzcG9uc2UwARKGAQoPRGVsZXRlV2FyZWhvdXNlEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlV2FyZWhvdXNlUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVdhcmVob3VzZVJlc3BvbnNlEpgBChVDcmVhdGVSZXBvQ3JlZGVudGlhbHMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USmAEKFURlbGV0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKPAQoSR2V0UmVwb0NyZWRlbnRpYWxzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEpIBChNMaXN0UmVwb0NyZWRlbnRpYWxzEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USmAEKFVVwZGF0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKbAQoWTGlzdEdlbmVyaWNDcmVkZW50aWFscxI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEqEBChhDcmVhdGVHZW5lcmljQ3JlZGVudGlhbHMSQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USoQEKGFVwZGF0ZUdlbmVyaWNDcmVkZW50aWFscxJBLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRKhAQoYRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzEkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBpCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEoYBCg9DcmVhdGVDb25maWdNYXASOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVDb25maWdNYXBSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQ29uZmlnTWFwUmVzcG9uc2UShgEKD0RlbGV0ZUNvbmZpZ01hcBI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNvbmZpZ01hcFJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDb25maWdNYXBSZXNwb25zZRKDAQoOTGlzdENvbmZpZ01hcHMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q29uZmlnTWFwc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q29uZmlnTWFwc1Jlc3BvbnNlEn0KDEdldENvbmZpZ01hcBI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ01hcFJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdNYXBSZXNwb25zZRKGAQoPVXBkYXRlQ29uZmlnTWFwEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUNvbmZpZ01hcFJlc3BvbnNlEpgBChVMaXN0QW5hbHlzaXNUZW1wbGF0ZXMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USkgEKE0dldEFuYWx5c2lzVGVtcGxhdGUSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKbAQoWRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZRI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEq0BChxMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzEkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QaRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USpwEKGkdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlEkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKwAQodRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGUSRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaRy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEoMBCg5HZXRBbmFseXNpc1J1bhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVzcG9uc2USkQEKEkdldEFuYWx5c2lzUnVuTG9ncxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuTG9nc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1J1bkxvZ3NSZXNwb25zZTABEowBChFMaXN0UHJvamVjdEV2ZW50cxI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVzcG9uc2USjwEKEkxpc3RQcm9tb3Rpb25UYXNrcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25UYXNrc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uVGFza3NSZXNwb25zZRKkAQoZTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrcxJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXF1ZXN0GkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEokBChBHZXRQcm9tb3Rpb25UYXNrEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uVGFza1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25UYXNrUmVzcG9uc2USngEKF0dldENsdXN0ZXJQcm9tb3Rpb25UYXNrEkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXF1ZXN0GkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXNwb25zZRJ3CgpDcmVhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSb2xlUmVzcG9uc2USdwoKRGVsZXRlUm9sZRIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJvbGVSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUm9sZVJlc3BvbnNlEm4KB0dldFJvbGUSMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSb2xlUmVxdWVzdBoxLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJvbGVSZXNwb25zZRJoCgVHcmFudBIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVxdWVzdBovLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVzcG9uc2USdAoJTGlzdFJvbGVzEjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJvbGVzUmVxdWVzdBozLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSb2xlc1Jlc3BvbnNlEmsKBlJldm9rZRIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldm9rZVJlcXVlc3QaMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZva2VSZXNwb25zZRJ3CgpVcGRhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSb2xlUmVzcG9uc2USgwEKDkNyZWF0ZUFQSVRva2VuEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQVBJVG9rZW5SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQVBJVG9rZW5SZXNwb25zZRKDAQoORGVsZXRlQVBJVG9rZW4SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBUElUb2tlblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBUElUb2tlblJlc3BvbnNlEnoKC0dldEFQSVRva2VuEjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QVBJVG9rZW5SZXF1ZXN0GjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QVBJVG9rZW5SZXNwb25zZRKAAQoNTGlzdEFQSVRva2VucxI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RBUElUb2tlbnNSZXF1ZXN0GjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFQSVRva2Vuc1Jlc3BvbnNlQpMCCiRjb20uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTFCDFNlcnZpY2VQcm90b1ABWjhnaXRodWIuY29tL2FrdWl0eS9rYXJnby9hcGkvc2VydmljZS92MWFscGhhMTtzdmN2MWFscGhhMaICBEFJS1OqAiBBa3VpdHkuSW8uS2FyZ28uU2VydmljZS5WMWFscGhhMcoCIEFrdWl0eVxJb1xLYXJnb1xTZXJ2aWNlXFYxYWxwaGEx4gIsQWt1aXR5XElvXEthcmdvXFNlcnZpY2VcVjFhbHBoYTFcR1BCTWV0YWRhdGHqAiRBa3VpdHk6OklvOjpLYXJnbzo6U2VydmljZTo6VjFhbHBoYTFiBnByb3RvMw", [file_google_protobuf_timestamp, file_api_v1alpha1_generated, file_k8s_io_api_core_v1_generated, file_k8s_io_apimachinery_pkg_apis_meta_v1_generated, file_api_stubs_rollouts_v1alpha1_generated, file_api_rbac_v1alpha1_generated, file_google_protobuf_any]); /** * ComponentVersions contains version information for different Kargo components. @@ -707,6 +706,21 @@ export type ListStagesRequest = Message<"akuity.io.kargo.service.v1alpha1.ListSt * @generated from field: repeated string freight_origins = 2; */ freightOrigins: string[]; + + /** + * summary, when true, strips heavy fields from each Stage in the response. + * Intended for list and graph views that render many Stages but do not + * need full FreightHistory, PromotionTemplate step configuration, or the + * raw health output blob. Stripped Stages still carry: metadata, shard, + * requestedFreight, promotionTemplate step skeletons (kind/as/name but + * not config), verification, conditions, currentFreight (history[0]), + * currentPromotion, lastPromotion, health metadata (without output.raw), + * observedGeneration, autoPromotionEnabled. Use summary=false (default) + * to retrieve the full Stage, or GetStage for a single Stage in detail. + * + * @generated from field: bool summary = 3; + */ + summary: boolean; }; /** @@ -723,11 +737,25 @@ export const ListStagesRequestSchema: GenMessage = /*@__PURE_ */ export type ListStagesResponse = Message<"akuity.io.kargo.service.v1alpha1.ListStagesResponse"> & { /** - * stages is the list of Stage resources found in the project. + * stages is the list of Stage resources found in the project. When the + * corresponding request set summary=true, each Stage has heavy fields + * stripped: status.freightHistory is truncated to index 0, + * spec.promotionTemplate.spec.steps[*].config is cleared, and + * status.health.output is nil. * * @generated from field: repeated github.com.akuity.kargo.api.v1alpha1.Stage stages = 1; */ stages: Stage[]; + + /** + * resource_version is the Kubernetes ResourceVersion of the underlying + * StageList. Clients may pass this value to WatchStages to begin watching + * from the exact point this list was taken, receiving only subsequent + * changes without redundant initial events. + * + * @generated from field: string resource_version = 2; + */ + resourceVersion: string; }; /** @@ -972,6 +1000,25 @@ export type WatchStagesRequest = Message<"akuity.io.kargo.service.v1alpha1.Watch * @generated from field: repeated string freight_origins = 3; */ freightOrigins: string[]; + + /** + * summary, when true, applies the same projection as + * ListStagesRequest.summary to each streamed Stage. See the summary + * field on ListStagesRequest for the list of fields stripped. + * + * @generated from field: bool summary = 4; + */ + summary: boolean; + + /** + * resource_version is an optional Kubernetes ResourceVersion. When set, + * the watch begins at the specified version, allowing clients to resume + * from a prior list (see ListStagesResponse.resource_version) or watch + * without missing or duplicating events. + * + * @generated from field: string resource_version = 5; + */ + resourceVersion: string; }; /** @@ -1054,304 +1101,6 @@ export type DeleteStageResponse = Message<"akuity.io.kargo.service.v1alpha1.Dele export const DeleteStageResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_api_service_v1alpha1_service, 37); -/** - * StageSummary is a lightweight projection of a Stage resource intended for - * use by clients rendering list or graph views of many stages. It omits - * heavy fields that are only needed when a single stage is inspected in - * detail (e.g. full FreightHistory beyond the current FreightCollection, - * PromotionTemplate step configuration, and Verification configuration). - * - * @generated from message akuity.io.kargo.service.v1alpha1.StageSummary - */ -export type StageSummary = Message<"akuity.io.kargo.service.v1alpha1.StageSummary"> & { - /** - * metadata contains the Stage's identity and Kubernetes object metadata. - * - * @generated from field: optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; - */ - metadata?: ObjectMeta; - - /** - * spec contains the subset of StageSpec fields needed by list/graph views. - * - * @generated from field: optional akuity.io.kargo.service.v1alpha1.StageSpecSummary spec = 2; - */ - spec?: StageSpecSummary; - - /** - * status contains the subset of StageStatus fields needed by list/graph views. - * - * @generated from field: optional akuity.io.kargo.service.v1alpha1.StageStatusSummary status = 3; - */ - status?: StageStatusSummary; -}; - -/** - * Describes the message akuity.io.kargo.service.v1alpha1.StageSummary. - * Use `create(StageSummarySchema)` to create a new message. - */ -export const StageSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 38); - -/** - * StageSpecSummary is the subset of StageSpec fields returned by - * ListStageSummaries. See StageSummary for the motivation. - * - * @generated from message akuity.io.kargo.service.v1alpha1.StageSpecSummary - */ -export type StageSpecSummary = Message<"akuity.io.kargo.service.v1alpha1.StageSpecSummary"> & { - /** - * shard is the name of the shard that the Stage belongs to, mirroring - * StageSpec.shard. - * - * @generated from field: string shard = 1; - */ - shard: string; - - /** - * requestedFreight mirrors StageSpec.requestedFreight. This is needed in - * full to render graph edges between Stages and their upstream sources. - * - * @generated from field: repeated github.com.akuity.kargo.api.v1alpha1.FreightRequest requested_freight = 2; - */ - requestedFreight: FreightRequest[]; - - /** - * promotionStepCount is the number of promotion steps defined in the - * Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. - * Use GetStage to retrieve the full step configuration. - * - * @generated from field: int32 promotion_step_count = 3; - */ - promotionStepCount: number; - - /** - * hasVerification indicates whether the Stage defines a Verification. - * Use GetStage to retrieve the full Verification configuration. - * - * @generated from field: bool has_verification = 4; - */ - hasVerification: boolean; -}; - -/** - * Describes the message akuity.io.kargo.service.v1alpha1.StageSpecSummary. - * Use `create(StageSpecSummarySchema)` to create a new message. - */ -export const StageSpecSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 39); - -/** - * StageStatusSummary is the subset of StageStatus fields returned by - * ListStageSummaries. See StageSummary for the motivation. - * - * @generated from message akuity.io.kargo.service.v1alpha1.StageStatusSummary - */ -export type StageStatusSummary = Message<"akuity.io.kargo.service.v1alpha1.StageStatusSummary"> & { - /** - * conditions mirrors StageStatus.conditions. - * - * @generated from field: repeated k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 1; - */ - conditions: Condition[]; - - /** - * lastHandledRefresh mirrors StageStatus.lastHandledRefresh. - * - * @generated from field: string last_handled_refresh = 2; - */ - lastHandledRefresh: string; - - /** - * currentFreight is the FreightCollection currently deployed to the Stage - * (i.e. index 0 of StageStatus.freightHistory), or null if no Freight has - * been deployed. Use GetStage to retrieve the full FreightHistory. - * - * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.FreightCollection current_freight = 3; - */ - currentFreight?: FreightCollection; - - /** - * currentPromotion mirrors StageStatus.currentPromotion. - * - * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.PromotionReference current_promotion = 4; - */ - currentPromotion?: PromotionReference; - - /** - * lastPromotion mirrors StageStatus.lastPromotion. - * - * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.PromotionReference last_promotion = 5; - */ - lastPromotion?: PromotionReference; - - /** - * health mirrors StageStatus.health. - * - * @generated from field: optional github.com.akuity.kargo.api.v1alpha1.Health health = 6; - */ - health?: Health; - - /** - * observedGeneration mirrors StageStatus.observedGeneration. - * - * @generated from field: int64 observed_generation = 7; - */ - observedGeneration: bigint; - - /** - * autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. - * - * @generated from field: bool auto_promotion_enabled = 8; - */ - autoPromotionEnabled: boolean; -}; - -/** - * Describes the message akuity.io.kargo.service.v1alpha1.StageStatusSummary. - * Use `create(StageStatusSummarySchema)` to create a new message. - */ -export const StageStatusSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 40); - -/** - * ListStageSummariesRequest is the request for listing stage summaries - * within a project. - * - * @generated from message akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest - */ -export type ListStageSummariesRequest = Message<"akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest"> & { - /** - * project is the name of the project whose stage summaries should be listed. - * - * @generated from field: string project = 1; - */ - project: string; - - /** - * freightOrigins is an optional list of Warehouse names. When non-empty, - * only Stages that request Freight originating from at least one of the - * named Warehouses (directly or transitively via upstream Stages) will be - * returned. Mirrors ListStagesRequest.freightOrigins. - * - * @generated from field: repeated string freight_origins = 2; - */ - freightOrigins: string[]; -}; - -/** - * Describes the message akuity.io.kargo.service.v1alpha1.ListStageSummariesRequest. - * Use `create(ListStageSummariesRequestSchema)` to create a new message. - */ -export const ListStageSummariesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 41); - -/** - * ListStageSummariesResponse contains a list of stage summaries within a project. - * - * @generated from message akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse - */ -export type ListStageSummariesResponse = Message<"akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse"> & { - /** - * stageSummaries is the list of StageSummary objects found in the project. - * - * @generated from field: repeated akuity.io.kargo.service.v1alpha1.StageSummary stage_summaries = 1; - */ - stageSummaries: StageSummary[]; - - /** - * resourceVersion is the Kubernetes ResourceVersion of the underlying - * StageList. Clients may pass this value to WatchStageSummaries to begin - * watching from the exact point this list was taken, receiving only - * subsequent changes without redundant initial events. - * - * @generated from field: string resource_version = 2; - */ - resourceVersion: string; -}; - -/** - * Describes the message akuity.io.kargo.service.v1alpha1.ListStageSummariesResponse. - * Use `create(ListStageSummariesResponseSchema)` to create a new message. - */ -export const ListStageSummariesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 42); - -/** - * WatchStageSummariesRequest is the request for watching stage summaries via streaming. - * - * @generated from message akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest - */ -export type WatchStageSummariesRequest = Message<"akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest"> & { - /** - * project is the name of the project whose stage summaries should be watched. - * - * @generated from field: string project = 1; - */ - project: string; - - /** - * name is the name of a specific stage to watch, if empty all stages in the project are watched. - * - * @generated from field: string name = 2; - */ - name: string; - - /** - * freightOrigins is an optional list of Warehouse names. When non-empty, - * only events for Stages that request Freight originating from at least - * one of the named Warehouses (directly or transitively via upstream - * Stages) will be streamed. Mirrors WatchStagesRequest.freightOrigins. - * - * @generated from field: repeated string freight_origins = 3; - */ - freightOrigins: string[]; - - /** - * resourceVersion is an optional Kubernetes ResourceVersion. When set, - * the watch begins at the specified version, allowing clients to resume - * from a prior list or watch without missing or duplicating events. - * - * @generated from field: string resource_version = 4; - */ - resourceVersion: string; -}; - -/** - * Describes the message akuity.io.kargo.service.v1alpha1.WatchStageSummariesRequest. - * Use `create(WatchStageSummariesRequestSchema)` to create a new message. - */ -export const WatchStageSummariesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 43); - -/** - * WatchStageSummariesResponse contains stage summary change notifications. - * - * @generated from message akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse - */ -export type WatchStageSummariesResponse = Message<"akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse"> & { - /** - * stageSummary is the StageSummary for the Stage that changed. - * - * @generated from field: optional akuity.io.kargo.service.v1alpha1.StageSummary stage_summary = 1; - */ - stageSummary?: StageSummary; - - /** - * type indicates the type of change (ADDED, MODIFIED, DELETED). - * - * @generated from field: string type = 2; - */ - type: string; -}; - -/** - * Describes the message akuity.io.kargo.service.v1alpha1.WatchStageSummariesResponse. - * Use `create(WatchStageSummariesResponseSchema)` to create a new message. - */ -export const WatchStageSummariesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 44); - /** * @generated from message akuity.io.kargo.service.v1alpha1.GetClusterConfigRequest */ @@ -1367,7 +1116,7 @@ export type GetClusterConfigRequest = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(GetClusterConfigRequestSchema)` to create a new message. */ export const GetClusterConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 45); + messageDesc(file_api_service_v1alpha1_service, 38); /** * @generated from message akuity.io.kargo.service.v1alpha1.GetClusterConfigResponse @@ -1396,7 +1145,7 @@ export type GetClusterConfigResponse = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(GetClusterConfigResponseSchema)` to create a new message. */ export const GetClusterConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 46); + messageDesc(file_api_service_v1alpha1_service, 39); /** * explicitly empty @@ -1411,7 +1160,7 @@ export type DeleteClusterConfigRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(DeleteClusterConfigRequestSchema)` to create a new message. */ export const DeleteClusterConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 47); + messageDesc(file_api_service_v1alpha1_service, 40); /** * explicitly empty @@ -1426,7 +1175,7 @@ export type DeleteClusterConfigResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(DeleteClusterConfigResponseSchema)` to create a new message. */ export const DeleteClusterConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 48); + messageDesc(file_api_service_v1alpha1_service, 41); /** * explicitly empty @@ -1441,7 +1190,7 @@ export type WatchClusterConfigRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(WatchClusterConfigRequestSchema)` to create a new message. */ export const WatchClusterConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 49); + messageDesc(file_api_service_v1alpha1_service, 42); /** * @generated from message akuity.io.kargo.service.v1alpha1.WatchClusterConfigResponse @@ -1465,7 +1214,7 @@ export type WatchClusterConfigResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(WatchClusterConfigResponseSchema)` to create a new message. */ export const WatchClusterConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 50); + messageDesc(file_api_service_v1alpha1_service, 43); /** * ListPromotionsRequest is the request for retrieving all promotions, optionally filtered by stage. @@ -1493,7 +1242,7 @@ export type ListPromotionsRequest = Message<"akuity.io.kargo.service.v1alpha1.Li * Use `create(ListPromotionsRequestSchema)` to create a new message. */ export const ListPromotionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 51); + messageDesc(file_api_service_v1alpha1_service, 44); /** * ListPromotionsResponse contains a list of promotions within a project. @@ -1514,7 +1263,7 @@ export type ListPromotionsResponse = Message<"akuity.io.kargo.service.v1alpha1.L * Use `create(ListPromotionsResponseSchema)` to create a new message. */ export const ListPromotionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 52); + messageDesc(file_api_service_v1alpha1_service, 45); /** * WatchPromotionsRequest is the request for watching promotion changes via streaming. @@ -1542,7 +1291,7 @@ export type WatchPromotionsRequest = Message<"akuity.io.kargo.service.v1alpha1.W * Use `create(WatchPromotionsRequestSchema)` to create a new message. */ export const WatchPromotionsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 53); + messageDesc(file_api_service_v1alpha1_service, 46); /** * WatchPromotionsResponse contains promotion change notifications. @@ -1570,7 +1319,7 @@ export type WatchPromotionsResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(WatchPromotionsResponseSchema)` to create a new message. */ export const WatchPromotionsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 54); + messageDesc(file_api_service_v1alpha1_service, 47); /** * GetPromotionRequest is the request for retrieving details of a specific promotion. @@ -1605,7 +1354,7 @@ export type GetPromotionRequest = Message<"akuity.io.kargo.service.v1alpha1.GetP * Use `create(GetPromotionRequestSchema)` to create a new message. */ export const GetPromotionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 55); + messageDesc(file_api_service_v1alpha1_service, 48); /** * GetPromotionResponse contains the requested promotion information. @@ -1640,7 +1389,7 @@ export type GetPromotionResponse = Message<"akuity.io.kargo.service.v1alpha1.Get * Use `create(GetPromotionResponseSchema)` to create a new message. */ export const GetPromotionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 56); + messageDesc(file_api_service_v1alpha1_service, 49); /** * WatchPromotionRequest is the request for watching a specific promotion via streaming. @@ -1668,7 +1417,7 @@ export type WatchPromotionRequest = Message<"akuity.io.kargo.service.v1alpha1.Wa * Use `create(WatchPromotionRequestSchema)` to create a new message. */ export const WatchPromotionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 57); + messageDesc(file_api_service_v1alpha1_service, 50); /** * WatchPromotionResponse contains specific promotion change notifications. @@ -1696,7 +1445,7 @@ export type WatchPromotionResponse = Message<"akuity.io.kargo.service.v1alpha1.W * Use `create(WatchPromotionResponseSchema)` to create a new message. */ export const WatchPromotionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 58); + messageDesc(file_api_service_v1alpha1_service, 51); /** * AbortPromotionRequest is the request for canceling a running promotion process. @@ -1724,7 +1473,7 @@ export type AbortPromotionRequest = Message<"akuity.io.kargo.service.v1alpha1.Ab * Use `create(AbortPromotionRequestSchema)` to create a new message. */ export const AbortPromotionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 59); + messageDesc(file_api_service_v1alpha1_service, 52); /** * AbortPromotionResponse is the response after aborting a promotion. @@ -1741,7 +1490,7 @@ export type AbortPromotionResponse = Message<"akuity.io.kargo.service.v1alpha1.A * Use `create(AbortPromotionResponseSchema)` to create a new message. */ export const AbortPromotionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 60); + messageDesc(file_api_service_v1alpha1_service, 53); /** * DeleteProjectRequest is the request for deleting a project and all associated resources. @@ -1762,7 +1511,7 @@ export type DeleteProjectRequest = Message<"akuity.io.kargo.service.v1alpha1.Del * Use `create(DeleteProjectRequestSchema)` to create a new message. */ export const DeleteProjectRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 61); + messageDesc(file_api_service_v1alpha1_service, 54); /** * DeleteProjectResponse is the response after deleting a project. @@ -1779,7 +1528,7 @@ export type DeleteProjectResponse = Message<"akuity.io.kargo.service.v1alpha1.De * Use `create(DeleteProjectResponseSchema)` to create a new message. */ export const DeleteProjectResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 62); + messageDesc(file_api_service_v1alpha1_service, 55); /** * GetProjectRequest is the request for retrieving details of a specific project. @@ -1807,7 +1556,7 @@ export type GetProjectRequest = Message<"akuity.io.kargo.service.v1alpha1.GetPro * Use `create(GetProjectRequestSchema)` to create a new message. */ export const GetProjectRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 63); + messageDesc(file_api_service_v1alpha1_service, 56); /** * GetProjectResponse contains the requested project information. @@ -1842,7 +1591,7 @@ export type GetProjectResponse = Message<"akuity.io.kargo.service.v1alpha1.GetPr * Use `create(GetProjectResponseSchema)` to create a new message. */ export const GetProjectResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 64); + messageDesc(file_api_service_v1alpha1_service, 57); /** * ListProjectsRequest is the request for listing all projects with optional filtering and pagination. @@ -1892,7 +1641,7 @@ export type ListProjectsRequest = Message<"akuity.io.kargo.service.v1alpha1.List * Use `create(ListProjectsRequestSchema)` to create a new message. */ export const ListProjectsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 65); + messageDesc(file_api_service_v1alpha1_service, 58); /** * ListProjectsResponse contains the list of projects and pagination information. @@ -1920,7 +1669,7 @@ export type ListProjectsResponse = Message<"akuity.io.kargo.service.v1alpha1.Lis * Use `create(ListProjectsResponseSchema)` to create a new message. */ export const ListProjectsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 66); + messageDesc(file_api_service_v1alpha1_service, 59); /** * GetProjectConfigRequest is the request for retrieving project-level configuration settings. @@ -1948,7 +1697,7 @@ export type GetProjectConfigRequest = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(GetProjectConfigRequestSchema)` to create a new message. */ export const GetProjectConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 67); + messageDesc(file_api_service_v1alpha1_service, 60); /** * GetProjectConfigResponse contains the requested project configuration. @@ -1983,7 +1732,7 @@ export type GetProjectConfigResponse = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(GetProjectConfigResponseSchema)` to create a new message. */ export const GetProjectConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 68); + messageDesc(file_api_service_v1alpha1_service, 61); /** * DeleteProjectConfigRequest is the request for removing project-level configuration. @@ -2004,7 +1753,7 @@ export type DeleteProjectConfigRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(DeleteProjectConfigRequestSchema)` to create a new message. */ export const DeleteProjectConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 69); + messageDesc(file_api_service_v1alpha1_service, 62); /** * DeleteProjectConfigResponse is the response after deleting project configuration. @@ -2021,7 +1770,7 @@ export type DeleteProjectConfigResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(DeleteProjectConfigResponseSchema)` to create a new message. */ export const DeleteProjectConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 70); + messageDesc(file_api_service_v1alpha1_service, 63); /** * WatchProjectConfigRequest is the request for streaming project configuration changes. @@ -2042,7 +1791,7 @@ export type WatchProjectConfigRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(WatchProjectConfigRequestSchema)` to create a new message. */ export const WatchProjectConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 71); + messageDesc(file_api_service_v1alpha1_service, 64); /** * WatchProjectConfigResponse provides streaming updates for project configuration changes. @@ -2070,7 +1819,7 @@ export type WatchProjectConfigResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(WatchProjectConfigResponseSchema)` to create a new message. */ export const WatchProjectConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 72); + messageDesc(file_api_service_v1alpha1_service, 65); /** * ApproveFreightRequest is the request for approving freight for promotion to a stage. @@ -2112,7 +1861,7 @@ export type ApproveFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Ap * Use `create(ApproveFreightRequestSchema)` to create a new message. */ export const ApproveFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 73); + messageDesc(file_api_service_v1alpha1_service, 66); /** * ApproveFreightResponse is the response after approving freight. @@ -2129,7 +1878,7 @@ export type ApproveFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.A * Use `create(ApproveFreightResponseSchema)` to create a new message. */ export const ApproveFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 74); + messageDesc(file_api_service_v1alpha1_service, 67); /** * DeleteFreightRequest is the request for deleting freight. @@ -2164,7 +1913,7 @@ export type DeleteFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Del * Use `create(DeleteFreightRequestSchema)` to create a new message. */ export const DeleteFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 75); + messageDesc(file_api_service_v1alpha1_service, 68); /** * DeleteFreightResponse is the response after deleting freight. @@ -2181,7 +1930,7 @@ export type DeleteFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.De * Use `create(DeleteFreightResponseSchema)` to create a new message. */ export const DeleteFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 76); + messageDesc(file_api_service_v1alpha1_service, 69); /** * GetFreightRequest is the request for retrieving details of specific freight. @@ -2223,7 +1972,7 @@ export type GetFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.GetFre * Use `create(GetFreightRequestSchema)` to create a new message. */ export const GetFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 77); + messageDesc(file_api_service_v1alpha1_service, 70); /** * GetFreightResponse contains the requested freight information. @@ -2258,7 +2007,7 @@ export type GetFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.GetFr * Use `create(GetFreightResponseSchema)` to create a new message. */ export const GetFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 78); + messageDesc(file_api_service_v1alpha1_service, 71); /** * WatchFreightRequest is the request for watching freight changes via streaming. @@ -2288,7 +2037,7 @@ export type WatchFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Watc * Use `create(WatchFreightRequestSchema)` to create a new message. */ export const WatchFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 79); + messageDesc(file_api_service_v1alpha1_service, 72); /** * WatchFreightResponse contains freight change notifications. @@ -2318,7 +2067,7 @@ export type WatchFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.Wat * Use `create(WatchFreightResponseSchema)` to create a new message. */ export const WatchFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 80); + messageDesc(file_api_service_v1alpha1_service, 73); /** * PromoteToStageRequest is the request for promoting freight to a specific stage. @@ -2360,7 +2109,7 @@ export type PromoteToStageRequest = Message<"akuity.io.kargo.service.v1alpha1.Pr * Use `create(PromoteToStageRequestSchema)` to create a new message. */ export const PromoteToStageRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 81); + messageDesc(file_api_service_v1alpha1_service, 74); /** * PromoteToStageResponse contains the promotion created for the freight promotion. @@ -2381,7 +2130,7 @@ export type PromoteToStageResponse = Message<"akuity.io.kargo.service.v1alpha1.P * Use `create(PromoteToStageResponseSchema)` to create a new message. */ export const PromoteToStageResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 82); + messageDesc(file_api_service_v1alpha1_service, 75); /** * PromoteDownstreamRequest is the request for automatically promoting freight to downstream stages. @@ -2423,7 +2172,7 @@ export type PromoteDownstreamRequest = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(PromoteDownstreamRequestSchema)` to create a new message. */ export const PromoteDownstreamRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 83); + messageDesc(file_api_service_v1alpha1_service, 76); /** * PromoteDownstreamResponse contains the promotions created for downstream freight promotions. @@ -2444,7 +2193,7 @@ export type PromoteDownstreamResponse = Message<"akuity.io.kargo.service.v1alpha * Use `create(PromoteDownstreamResponseSchema)` to create a new message. */ export const PromoteDownstreamResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 84); + messageDesc(file_api_service_v1alpha1_service, 77); /** * QueryFreightRequest is the request for searching freight based on specified criteria. @@ -2507,7 +2256,7 @@ export type QueryFreightRequest = Message<"akuity.io.kargo.service.v1alpha1.Quer * Use `create(QueryFreightRequestSchema)` to create a new message. */ export const QueryFreightRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 85); + messageDesc(file_api_service_v1alpha1_service, 78); /** * QueryFreightResponse contains the grouped freight search results. @@ -2528,7 +2277,7 @@ export type QueryFreightResponse = Message<"akuity.io.kargo.service.v1alpha1.Que * Use `create(QueryFreightResponseSchema)` to create a new message. */ export const QueryFreightResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 86); + messageDesc(file_api_service_v1alpha1_service, 79); /** * FreightList contains a list of freight resources. @@ -2549,7 +2298,7 @@ export type FreightList = Message<"akuity.io.kargo.service.v1alpha1.FreightList" * Use `create(FreightListSchema)` to create a new message. */ export const FreightListSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 87); + messageDesc(file_api_service_v1alpha1_service, 80); /** * UpdateFreightAliasRequest is the request for updating a freight's alias. @@ -2591,7 +2340,7 @@ export type UpdateFreightAliasRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(UpdateFreightAliasRequestSchema)` to create a new message. */ export const UpdateFreightAliasRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 88); + messageDesc(file_api_service_v1alpha1_service, 81); /** * UpdateFreightAliasResponse is the response after updating a freight's alias. @@ -2608,7 +2357,7 @@ export type UpdateFreightAliasResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(UpdateFreightAliasResponseSchema)` to create a new message. */ export const UpdateFreightAliasResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 89); + messageDesc(file_api_service_v1alpha1_service, 82); /** * ReverifyRequest is the request for triggering re-execution of verification processes for a stage. @@ -2636,7 +2385,7 @@ export type ReverifyRequest = Message<"akuity.io.kargo.service.v1alpha1.Reverify * Use `create(ReverifyRequestSchema)` to create a new message. */ export const ReverifyRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 90); + messageDesc(file_api_service_v1alpha1_service, 83); /** * ReverifyResponse is the response after triggering reverification. @@ -2653,7 +2402,7 @@ export type ReverifyResponse = Message<"akuity.io.kargo.service.v1alpha1.Reverif * Use `create(ReverifyResponseSchema)` to create a new message. */ export const ReverifyResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 91); + messageDesc(file_api_service_v1alpha1_service, 84); /** * AbortVerificationRequest is the request for canceling running verification processes for a stage. @@ -2681,7 +2430,7 @@ export type AbortVerificationRequest = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(AbortVerificationRequestSchema)` to create a new message. */ export const AbortVerificationRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 92); + messageDesc(file_api_service_v1alpha1_service, 85); /** * AbortVerificationResponse is the response after aborting verification. @@ -2698,7 +2447,7 @@ export type AbortVerificationResponse = Message<"akuity.io.kargo.service.v1alpha * Use `create(AbortVerificationResponseSchema)` to create a new message. */ export const AbortVerificationResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 93); + messageDesc(file_api_service_v1alpha1_service, 86); /** * ListWarehousesRequest is the request for listing warehouses within a project. @@ -2719,7 +2468,7 @@ export type ListWarehousesRequest = Message<"akuity.io.kargo.service.v1alpha1.Li * Use `create(ListWarehousesRequestSchema)` to create a new message. */ export const ListWarehousesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 94); + messageDesc(file_api_service_v1alpha1_service, 87); /** * ListWarehousesResponse contains a list of warehouses within a project. @@ -2740,7 +2489,7 @@ export type ListWarehousesResponse = Message<"akuity.io.kargo.service.v1alpha1.L * Use `create(ListWarehousesResponseSchema)` to create a new message. */ export const ListWarehousesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 95); + messageDesc(file_api_service_v1alpha1_service, 88); /** * GetWarehouseRequest is the request for retrieving details of a specific warehouse. @@ -2775,7 +2524,7 @@ export type GetWarehouseRequest = Message<"akuity.io.kargo.service.v1alpha1.GetW * Use `create(GetWarehouseRequestSchema)` to create a new message. */ export const GetWarehouseRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 96); + messageDesc(file_api_service_v1alpha1_service, 89); /** * GetWarehouseResponse contains the requested warehouse information. @@ -2810,7 +2559,7 @@ export type GetWarehouseResponse = Message<"akuity.io.kargo.service.v1alpha1.Get * Use `create(GetWarehouseResponseSchema)` to create a new message. */ export const GetWarehouseResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 97); + messageDesc(file_api_service_v1alpha1_service, 90); /** * WatchWarehousesRequest is the request for watching warehouse changes via streaming. @@ -2838,7 +2587,7 @@ export type WatchWarehousesRequest = Message<"akuity.io.kargo.service.v1alpha1.W * Use `create(WatchWarehousesRequestSchema)` to create a new message. */ export const WatchWarehousesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 98); + messageDesc(file_api_service_v1alpha1_service, 91); /** * WatchWarehousesResponse contains warehouse change notifications. @@ -2866,7 +2615,7 @@ export type WatchWarehousesResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(WatchWarehousesResponseSchema)` to create a new message. */ export const WatchWarehousesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 99); + messageDesc(file_api_service_v1alpha1_service, 92); /** * DeleteWarehouseRequest is the request for deleting a warehouse. @@ -2894,7 +2643,7 @@ export type DeleteWarehouseRequest = Message<"akuity.io.kargo.service.v1alpha1.D * Use `create(DeleteWarehouseRequestSchema)` to create a new message. */ export const DeleteWarehouseRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 100); + messageDesc(file_api_service_v1alpha1_service, 93); /** * DeleteWarehouseResponse is the response after deleting a warehouse. @@ -2911,7 +2660,7 @@ export type DeleteWarehouseResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(DeleteWarehouseResponseSchema)` to create a new message. */ export const DeleteWarehouseResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 101); + messageDesc(file_api_service_v1alpha1_service, 94); /** * CreateConfigMapRequest is the request for creating a project-level, @@ -2972,7 +2721,7 @@ export type CreateConfigMapRequest = Message<"akuity.io.kargo.service.v1alpha1.C * Use `create(CreateConfigMapRequestSchema)` to create a new message. */ export const CreateConfigMapRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 102); + messageDesc(file_api_service_v1alpha1_service, 95); /** * CreateConfigMapResponse is the response containing the ConfigMap that was @@ -2994,7 +2743,7 @@ export type CreateConfigMapResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(CreateConfigMapResponseSchema)` to create a new message. */ export const CreateConfigMapResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 103); + messageDesc(file_api_service_v1alpha1_service, 96); /** * DeleteConfigMapRequest is the request for deleting a project-level, @@ -3033,7 +2782,7 @@ export type DeleteConfigMapRequest = Message<"akuity.io.kargo.service.v1alpha1.D * Use `create(DeleteConfigMapRequestSchema)` to create a new message. */ export const DeleteConfigMapRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 104); + messageDesc(file_api_service_v1alpha1_service, 97); /** * DeleteConfigMapResponse is the response returned after deleting a ConfigMap. @@ -3050,7 +2799,7 @@ export type DeleteConfigMapResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(DeleteConfigMapResponseSchema)` to create a new message. */ export const DeleteConfigMapResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 105); + messageDesc(file_api_service_v1alpha1_service, 98); /** * ListConfigMapsRequest is the request for listing all project-level, @@ -3082,7 +2831,7 @@ export type ListConfigMapsRequest = Message<"akuity.io.kargo.service.v1alpha1.Li * Use `create(ListConfigMapsRequestSchema)` to create a new message. */ export const ListConfigMapsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 106); + messageDesc(file_api_service_v1alpha1_service, 99); /** * ListConfigMapsResponse contains the list of ConfigMaps. @@ -3103,7 +2852,7 @@ export type ListConfigMapsResponse = Message<"akuity.io.kargo.service.v1alpha1.L * Use `create(ListConfigMapsResponseSchema)` to create a new message. */ export const ListConfigMapsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 107); + messageDesc(file_api_service_v1alpha1_service, 100); /** * GetConfigMapRequest is the request for getting a specific project-level, @@ -3150,7 +2899,7 @@ export type GetConfigMapRequest = Message<"akuity.io.kargo.service.v1alpha1.GetC * Use `create(GetConfigMapRequestSchema)` to create a new message. */ export const GetConfigMapRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 108); + messageDesc(file_api_service_v1alpha1_service, 101); /** * GetConfigMapResponse contains the requested ConfigMap. @@ -3185,7 +2934,7 @@ export type GetConfigMapResponse = Message<"akuity.io.kargo.service.v1alpha1.Get * Use `create(GetConfigMapResponseSchema)` to create a new message. */ export const GetConfigMapResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 109); + messageDesc(file_api_service_v1alpha1_service, 102); /** * UpdateConfigMapRequest is the request for updating a project-level, @@ -3246,7 +2995,7 @@ export type UpdateConfigMapRequest = Message<"akuity.io.kargo.service.v1alpha1.U * Use `create(UpdateConfigMapRequestSchema)` to create a new message. */ export const UpdateConfigMapRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 110); + messageDesc(file_api_service_v1alpha1_service, 103); /** * UpdateConfigMapResponse is the response containing the updated ConfigMap. @@ -3267,7 +3016,7 @@ export type UpdateConfigMapResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(UpdateConfigMapResponseSchema)` to create a new message. */ export const UpdateConfigMapResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 111); + messageDesc(file_api_service_v1alpha1_service, 104); /** * CreateRepoCredentialsRequest is the request for creating new credentials for accessing external repositories. @@ -3337,7 +3086,7 @@ export type CreateRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1al * Use `create(CreateRepoCredentialsRequestSchema)` to create a new message. */ export const CreateRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 112); + messageDesc(file_api_service_v1alpha1_service, 105); /** * CreateRepoCredentialsResponse contains the newly created repository credentials. @@ -3358,7 +3107,7 @@ export type CreateRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1a * Use `create(CreateRepoCredentialsResponseSchema)` to create a new message. */ export const CreateRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 113); + messageDesc(file_api_service_v1alpha1_service, 106); /** * DeleteRepoCredentialsRequest is the request for deleting existing repository credentials. @@ -3387,7 +3136,7 @@ export type DeleteRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1al * Use `create(DeleteRepoCredentialsRequestSchema)` to create a new message. */ export const DeleteRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 114); + messageDesc(file_api_service_v1alpha1_service, 107); /** * DeleteRepoCredentialsResponse is the response returned after deleting repository credentials. @@ -3404,7 +3153,7 @@ export type DeleteRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1a * Use `create(DeleteRepoCredentialsResponseSchema)` to create a new message. */ export const DeleteRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 115); + messageDesc(file_api_service_v1alpha1_service, 108); /** * GetRepoCredentialsRequest is the request for retrieving existing repository credentials. @@ -3439,7 +3188,7 @@ export type GetRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(GetRepoCredentialsRequestSchema)` to create a new message. */ export const GetRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 116); + messageDesc(file_api_service_v1alpha1_service, 109); /** * GetRepoCredentialsResponse contains the requested repository credentials information. @@ -3474,7 +3223,7 @@ export type GetRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(GetRepoCredentialsResponseSchema)` to create a new message. */ export const GetRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 117); + messageDesc(file_api_service_v1alpha1_service, 110); /** * ListRepoCredentialsRequest is the request for listing all repository credentials in a project. @@ -3495,7 +3244,7 @@ export type ListRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(ListRepoCredentialsRequestSchema)` to create a new message. */ export const ListRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 118); + messageDesc(file_api_service_v1alpha1_service, 111); /** * ListRepoCredentialsResponse contains a list of repository credentials for the specified project. @@ -3516,7 +3265,7 @@ export type ListRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(ListRepoCredentialsResponseSchema)` to create a new message. */ export const ListRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 119); + messageDesc(file_api_service_v1alpha1_service, 112); /** * UpdateRepoCredentialsRequest is the request for updating existing repository credentials. @@ -3586,7 +3335,7 @@ export type UpdateRepoCredentialsRequest = Message<"akuity.io.kargo.service.v1al * Use `create(UpdateRepoCredentialsRequestSchema)` to create a new message. */ export const UpdateRepoCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 120); + messageDesc(file_api_service_v1alpha1_service, 113); /** * UpdateRepoCredentialsResponse contains the updated repository credentials information. @@ -3607,7 +3356,7 @@ export type UpdateRepoCredentialsResponse = Message<"akuity.io.kargo.service.v1a * Use `create(UpdateRepoCredentialsResponseSchema)` to create a new message. */ export const UpdateRepoCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 121); + messageDesc(file_api_service_v1alpha1_service, 114); /** * ListGenericCredentialsRequest is the request for listing all generic @@ -3639,7 +3388,7 @@ export type ListGenericCredentialsRequest = Message<"akuity.io.kargo.service.v1a * Use `create(ListGenericCredentialsRequestSchema)` to create a new message. */ export const ListGenericCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 122); + messageDesc(file_api_service_v1alpha1_service, 115); /** * ListGenericCredentialsResponse contains a list of generic credentials for the specified project. @@ -3660,7 +3409,7 @@ export type ListGenericCredentialsResponse = Message<"akuity.io.kargo.service.v1 * Use `create(ListGenericCredentialsResponseSchema)` to create a new message. */ export const ListGenericCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 123); + messageDesc(file_api_service_v1alpha1_service, 116); /** * CreateGenericCredentialsRequest is the request for creating new generic @@ -3721,7 +3470,7 @@ export type CreateGenericCredentialsRequest = Message<"akuity.io.kargo.service.v * Use `create(CreateGenericCredentialsRequestSchema)` to create a new message. */ export const CreateGenericCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 124); + messageDesc(file_api_service_v1alpha1_service, 117); /** * CreateGenericCredentialsResponse contains the newly created generic credentials. @@ -3742,7 +3491,7 @@ export type CreateGenericCredentialsResponse = Message<"akuity.io.kargo.service. * Use `create(CreateGenericCredentialsResponseSchema)` to create a new message. */ export const CreateGenericCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 125); + messageDesc(file_api_service_v1alpha1_service, 118); /** * UpdateGenericCredentialsRequest is the request for updating existing generic credentials. @@ -3802,7 +3551,7 @@ export type UpdateGenericCredentialsRequest = Message<"akuity.io.kargo.service.v * Use `create(UpdateGenericCredentialsRequestSchema)` to create a new message. */ export const UpdateGenericCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 126); + messageDesc(file_api_service_v1alpha1_service, 119); /** * UpdateGenericCredentialsResponse contains the updated generic credentials information. @@ -3823,7 +3572,7 @@ export type UpdateGenericCredentialsResponse = Message<"akuity.io.kargo.service. * Use `create(UpdateGenericCredentialsResponseSchema)` to create a new message. */ export const UpdateGenericCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 127); + messageDesc(file_api_service_v1alpha1_service, 120); /** * DeleteGenericCredentialsRequest is the request for deleting generic @@ -3862,7 +3611,7 @@ export type DeleteGenericCredentialsRequest = Message<"akuity.io.kargo.service.v * Use `create(DeleteGenericCredentialsRequestSchema)` to create a new message. */ export const DeleteGenericCredentialsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 128); + messageDesc(file_api_service_v1alpha1_service, 121); /** * DeleteGenericCredentialsResponse is the response returned after deleting generic credentials. @@ -3879,7 +3628,7 @@ export type DeleteGenericCredentialsResponse = Message<"akuity.io.kargo.service. * Use `create(DeleteGenericCredentialsResponseSchema)` to create a new message. */ export const DeleteGenericCredentialsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 129); + messageDesc(file_api_service_v1alpha1_service, 122); /** * ListAnalysisTemplatesRequest is the request for listing all analysis templates in a project. @@ -3900,7 +3649,7 @@ export type ListAnalysisTemplatesRequest = Message<"akuity.io.kargo.service.v1al * Use `create(ListAnalysisTemplatesRequestSchema)` to create a new message. */ export const ListAnalysisTemplatesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 130); + messageDesc(file_api_service_v1alpha1_service, 123); /** * ListAnalysisTemplatesResponse contains a list of analysis templates for the specified project. @@ -3921,7 +3670,7 @@ export type ListAnalysisTemplatesResponse = Message<"akuity.io.kargo.service.v1a * Use `create(ListAnalysisTemplatesResponseSchema)` to create a new message. */ export const ListAnalysisTemplatesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 131); + messageDesc(file_api_service_v1alpha1_service, 124); /** * GetAnalysisTemplateRequest is the request for retrieving a specific analysis template. @@ -3956,7 +3705,7 @@ export type GetAnalysisTemplateRequest = Message<"akuity.io.kargo.service.v1alph * Use `create(GetAnalysisTemplateRequestSchema)` to create a new message. */ export const GetAnalysisTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 132); + messageDesc(file_api_service_v1alpha1_service, 125); /** * GetAnalysisTemplateResponse contains the requested analysis template information. @@ -3991,7 +3740,7 @@ export type GetAnalysisTemplateResponse = Message<"akuity.io.kargo.service.v1alp * Use `create(GetAnalysisTemplateResponseSchema)` to create a new message. */ export const GetAnalysisTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 133); + messageDesc(file_api_service_v1alpha1_service, 126); /** * DeleteAnalysisTemplateRequest is the request for deleting an analysis template. @@ -4019,7 +3768,7 @@ export type DeleteAnalysisTemplateRequest = Message<"akuity.io.kargo.service.v1a * Use `create(DeleteAnalysisTemplateRequestSchema)` to create a new message. */ export const DeleteAnalysisTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 134); + messageDesc(file_api_service_v1alpha1_service, 127); /** * DeleteAnalysisTemplateResponse is the response returned after deleting an analysis template. @@ -4036,7 +3785,7 @@ export type DeleteAnalysisTemplateResponse = Message<"akuity.io.kargo.service.v1 * Use `create(DeleteAnalysisTemplateResponseSchema)` to create a new message. */ export const DeleteAnalysisTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 135); + messageDesc(file_api_service_v1alpha1_service, 128); /** * ListClusterAnalysisTemplatesRequest is the request for listing all cluster-level analysis templates. @@ -4051,7 +3800,7 @@ export type ListClusterAnalysisTemplatesRequest = Message<"akuity.io.kargo.servi * Use `create(ListClusterAnalysisTemplatesRequestSchema)` to create a new message. */ export const ListClusterAnalysisTemplatesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 136); + messageDesc(file_api_service_v1alpha1_service, 129); /** * ListClusterAnalysisTemplatesResponse contains a list of cluster-level analysis templates. @@ -4072,7 +3821,7 @@ export type ListClusterAnalysisTemplatesResponse = Message<"akuity.io.kargo.serv * Use `create(ListClusterAnalysisTemplatesResponseSchema)` to create a new message. */ export const ListClusterAnalysisTemplatesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 137); + messageDesc(file_api_service_v1alpha1_service, 130); /** * GetClusterAnalysisTemplateRequest is the request for retrieving a specific cluster analysis template. @@ -4100,7 +3849,7 @@ export type GetClusterAnalysisTemplateRequest = Message<"akuity.io.kargo.service * Use `create(GetClusterAnalysisTemplateRequestSchema)` to create a new message. */ export const GetClusterAnalysisTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 138); + messageDesc(file_api_service_v1alpha1_service, 131); /** * GetClusterAnalysisTemplateResponse contains the requested cluster analysis template information. @@ -4135,7 +3884,7 @@ export type GetClusterAnalysisTemplateResponse = Message<"akuity.io.kargo.servic * Use `create(GetClusterAnalysisTemplateResponseSchema)` to create a new message. */ export const GetClusterAnalysisTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 139); + messageDesc(file_api_service_v1alpha1_service, 132); /** * DeleteClusterAnalysisTemplateRequest is the request for deleting a cluster analysis template. @@ -4156,7 +3905,7 @@ export type DeleteClusterAnalysisTemplateRequest = Message<"akuity.io.kargo.serv * Use `create(DeleteClusterAnalysisTemplateRequestSchema)` to create a new message. */ export const DeleteClusterAnalysisTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 140); + messageDesc(file_api_service_v1alpha1_service, 133); /** * DeleteClusterAnalysisTemplateResponse is the response returned after deleting a cluster analysis template. @@ -4173,7 +3922,7 @@ export type DeleteClusterAnalysisTemplateResponse = Message<"akuity.io.kargo.ser * Use `create(DeleteClusterAnalysisTemplateResponseSchema)` to create a new message. */ export const DeleteClusterAnalysisTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 141); + messageDesc(file_api_service_v1alpha1_service, 134); /** * GetAnalysisRunRequest is the request for retrieving a specific analysis run. @@ -4208,7 +3957,7 @@ export type GetAnalysisRunRequest = Message<"akuity.io.kargo.service.v1alpha1.Ge * Use `create(GetAnalysisRunRequestSchema)` to create a new message. */ export const GetAnalysisRunRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 142); + messageDesc(file_api_service_v1alpha1_service, 135); /** * GetAnalysisRunResponse contains the requested analysis run information. @@ -4243,7 +3992,7 @@ export type GetAnalysisRunResponse = Message<"akuity.io.kargo.service.v1alpha1.G * Use `create(GetAnalysisRunResponseSchema)` to create a new message. */ export const GetAnalysisRunResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 143); + messageDesc(file_api_service_v1alpha1_service, 136); /** * GetAnalysisRunLogsRequest is the request for retrieving logs from an analysis run. @@ -4285,7 +4034,7 @@ export type GetAnalysisRunLogsRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(GetAnalysisRunLogsRequestSchema)` to create a new message. */ export const GetAnalysisRunLogsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 144); + messageDesc(file_api_service_v1alpha1_service, 137); /** * GetAnalysisRunLogsResponse contains a chunk of logs from the analysis run. @@ -4306,7 +4055,7 @@ export type GetAnalysisRunLogsResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(GetAnalysisRunLogsResponseSchema)` to create a new message. */ export const GetAnalysisRunLogsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 145); + messageDesc(file_api_service_v1alpha1_service, 138); /** * ListProjectEventsRequest is the request for listing events in a project. @@ -4327,7 +4076,7 @@ export type ListProjectEventsRequest = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(ListProjectEventsRequestSchema)` to create a new message. */ export const ListProjectEventsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 146); + messageDesc(file_api_service_v1alpha1_service, 139); /** * ListProjectEventsResponse contains a list of events for the specified project. @@ -4348,7 +4097,7 @@ export type ListProjectEventsResponse = Message<"akuity.io.kargo.service.v1alpha * Use `create(ListProjectEventsResponseSchema)` to create a new message. */ export const ListProjectEventsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 147); + messageDesc(file_api_service_v1alpha1_service, 140); /** * ListPromotionTasksRequest is the request for listing promotion tasks in a project. @@ -4369,7 +4118,7 @@ export type ListPromotionTasksRequest = Message<"akuity.io.kargo.service.v1alpha * Use `create(ListPromotionTasksRequestSchema)` to create a new message. */ export const ListPromotionTasksRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 148); + messageDesc(file_api_service_v1alpha1_service, 141); /** * ListPromotionTasksResponse contains a list of promotion tasks for the specified project. @@ -4390,7 +4139,7 @@ export type ListPromotionTasksResponse = Message<"akuity.io.kargo.service.v1alph * Use `create(ListPromotionTasksResponseSchema)` to create a new message. */ export const ListPromotionTasksResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 149); + messageDesc(file_api_service_v1alpha1_service, 142); /** * GetPromotionTaskRequest is the request for retrieving a specific promotion task. @@ -4425,7 +4174,7 @@ export type GetPromotionTaskRequest = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(GetPromotionTaskRequestSchema)` to create a new message. */ export const GetPromotionTaskRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 150); + messageDesc(file_api_service_v1alpha1_service, 143); /** * GetPromotionTaskResponse contains the requested promotion task information. @@ -4460,7 +4209,7 @@ export type GetPromotionTaskResponse = Message<"akuity.io.kargo.service.v1alpha1 * Use `create(GetPromotionTaskResponseSchema)` to create a new message. */ export const GetPromotionTaskResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 151); + messageDesc(file_api_service_v1alpha1_service, 144); /** * ListClusterPromotionTasksRequest is the request for listing all cluster-level promotion tasks. @@ -4475,7 +4224,7 @@ export type ListClusterPromotionTasksRequest = Message<"akuity.io.kargo.service. * Use `create(ListClusterPromotionTasksRequestSchema)` to create a new message. */ export const ListClusterPromotionTasksRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 152); + messageDesc(file_api_service_v1alpha1_service, 145); /** * ListClusterPromotionTasksResponse contains a list of cluster-level promotion tasks. @@ -4496,7 +4245,7 @@ export type ListClusterPromotionTasksResponse = Message<"akuity.io.kargo.service * Use `create(ListClusterPromotionTasksResponseSchema)` to create a new message. */ export const ListClusterPromotionTasksResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 153); + messageDesc(file_api_service_v1alpha1_service, 146); /** * GetClusterPromotionTaskRequest is the request for retrieving a specific cluster promotion task. @@ -4524,7 +4273,7 @@ export type GetClusterPromotionTaskRequest = Message<"akuity.io.kargo.service.v1 * Use `create(GetClusterPromotionTaskRequestSchema)` to create a new message. */ export const GetClusterPromotionTaskRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 154); + messageDesc(file_api_service_v1alpha1_service, 147); /** * GetClusterPromotionTaskResponse contains the requested cluster promotion task information. @@ -4559,7 +4308,7 @@ export type GetClusterPromotionTaskResponse = Message<"akuity.io.kargo.service.v * Use `create(GetClusterPromotionTaskResponseSchema)` to create a new message. */ export const GetClusterPromotionTaskResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 155); + messageDesc(file_api_service_v1alpha1_service, 148); /** * CreateRoleRequest is a request to create a new Kargo Role virtual resource by @@ -4581,7 +4330,7 @@ export type CreateRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.Create * Use `create(CreateRoleRequestSchema)` to create a new message. */ export const CreateRoleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 156); + messageDesc(file_api_service_v1alpha1_service, 149); /** * CreateRoleResponse contains the details of a newly created Kargo Role virtual @@ -4603,7 +4352,7 @@ export type CreateRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.Creat * Use `create(CreateRoleResponseSchema)` to create a new message. */ export const CreateRoleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 157); + messageDesc(file_api_service_v1alpha1_service, 150); /** * DeleteRoleRequest is a request to delete a Kargo Role virtual resource by @@ -4632,7 +4381,7 @@ export type DeleteRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.Delete * Use `create(DeleteRoleRequestSchema)` to create a new message. */ export const DeleteRoleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 158); + messageDesc(file_api_service_v1alpha1_service, 151); /** * DeleteRoleResponse is the response returned after deleting a Kargo Role @@ -4650,7 +4399,7 @@ export type DeleteRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.Delet * Use `create(DeleteRoleResponseSchema)` to create a new message. */ export const DeleteRoleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 159); + messageDesc(file_api_service_v1alpha1_service, 152); /** * GetRoleRequest is a request to retrieve the details of a Kargo Role virtual @@ -4704,7 +4453,7 @@ export type GetRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.GetRoleRe * Use `create(GetRoleRequestSchema)` to create a new message. */ export const GetRoleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 160); + messageDesc(file_api_service_v1alpha1_service, 153); /** * GetRoleResponse contains the details of a Kargo Role virtual resource or its @@ -4749,7 +4498,7 @@ export type GetRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.GetRoleR * Use `create(GetRoleResponseSchema)` to create a new message. */ export const GetRoleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 161); + messageDesc(file_api_service_v1alpha1_service, 154); /** * Claims represents a collection of OIDC claims. @@ -4771,7 +4520,7 @@ export type Claims = Message<"akuity.io.kargo.service.v1alpha1.Claims"> & { * Use `create(ClaimsSchema)` to create a new message. */ export const ClaimsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 162); + messageDesc(file_api_service_v1alpha1_service, 155); /** * GrantRequest is a request to assign permissions to a Kargo Role virtual @@ -4824,7 +4573,7 @@ export type GrantRequest = Message<"akuity.io.kargo.service.v1alpha1.GrantReques * Use `create(GrantRequestSchema)` to create a new message. */ export const GrantRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 163); + messageDesc(file_api_service_v1alpha1_service, 156); /** * GrantResponse contains the details of a Kargo Role virtual resource after a @@ -4846,7 +4595,7 @@ export type GrantResponse = Message<"akuity.io.kargo.service.v1alpha1.GrantRespo * Use `create(GrantResponseSchema)` to create a new message. */ export const GrantResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 164); + messageDesc(file_api_service_v1alpha1_service, 157); /** * ListRolesRequests is a request to retrieve the details of all Kargo Role @@ -4884,7 +4633,7 @@ export type ListRolesRequest = Message<"akuity.io.kargo.service.v1alpha1.ListRol * Use `create(ListRolesRequestSchema)` to create a new message. */ export const ListRolesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 165); + messageDesc(file_api_service_v1alpha1_service, 158); /** * ListRolesResponse contains a list of Kargo Role virtual resources or their @@ -4915,7 +4664,7 @@ export type ListRolesResponse = Message<"akuity.io.kargo.service.v1alpha1.ListRo * Use `create(ListRolesResponseSchema)` to create a new message. */ export const ListRolesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 166); + messageDesc(file_api_service_v1alpha1_service, 159); /** * RevokeRequest is a request to remove permissions from a Kargo Role virtual @@ -4969,7 +4718,7 @@ export type RevokeRequest = Message<"akuity.io.kargo.service.v1alpha1.RevokeRequ * Use `create(RevokeRequestSchema)` to create a new message. */ export const RevokeRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 167); + messageDesc(file_api_service_v1alpha1_service, 160); /** * RevokeResponse contains the details of a Kargo Role virtual resource after a @@ -4992,7 +4741,7 @@ export type RevokeResponse = Message<"akuity.io.kargo.service.v1alpha1.RevokeRes * Use `create(RevokeResponseSchema)` to create a new message. */ export const RevokeResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 168); + messageDesc(file_api_service_v1alpha1_service, 161); /** * UpdateRoleRequest is a request to modify an existing Kargo Role virtual @@ -5014,7 +4763,7 @@ export type UpdateRoleRequest = Message<"akuity.io.kargo.service.v1alpha1.Update * Use `create(UpdateRoleRequestSchema)` to create a new message. */ export const UpdateRoleRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 169); + messageDesc(file_api_service_v1alpha1_service, 162); /** * UpdateRoleResponse contains the details of the updated Kargo Role virtual @@ -5036,7 +4785,7 @@ export type UpdateRoleResponse = Message<"akuity.io.kargo.service.v1alpha1.Updat * Use `create(UpdateRoleResponseSchema)` to create a new message. */ export const UpdateRoleResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 170); + messageDesc(file_api_service_v1alpha1_service, 163); /** * CreateAPITokenRequest is a request to generate a new bearer token associated @@ -5084,7 +4833,7 @@ export type CreateAPITokenRequest = Message<"akuity.io.kargo.service.v1alpha1.Cr * Use `create(CreateAPITokenRequestSchema)` to create a new message. */ export const CreateAPITokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 171); + messageDesc(file_api_service_v1alpha1_service, 164); /** * CreateAPITokenResponse contains a newly generated bearer token in the form of @@ -5106,7 +4855,7 @@ export type CreateAPITokenResponse = Message<"akuity.io.kargo.service.v1alpha1.C * Use `create(CreateAPITokenResponseSchema)` to create a new message. */ export const CreateAPITokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 172); + messageDesc(file_api_service_v1alpha1_service, 165); /** * DeleteAPITokenRequest is a request to delete a bearer token associated with a @@ -5145,7 +4894,7 @@ export type DeleteAPITokenRequest = Message<"akuity.io.kargo.service.v1alpha1.De * Use `create(DeleteAPITokenRequestSchema)` to create a new message. */ export const DeleteAPITokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 173); + messageDesc(file_api_service_v1alpha1_service, 166); /** * DeleteAPITokenResponse is the response returned after deleting a bearer token @@ -5163,7 +4912,7 @@ export type DeleteAPITokenResponse = Message<"akuity.io.kargo.service.v1alpha1.D * Use `create(DeleteAPITokenResponseSchema)` to create a new message. */ export const DeleteAPITokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 174); + messageDesc(file_api_service_v1alpha1_service, 167); /** * GetAPITokenRequest is a request to retrieve details of a bearer token @@ -5209,7 +4958,7 @@ export type GetAPITokenRequest = Message<"akuity.io.kargo.service.v1alpha1.GetAP * Use `create(GetAPITokenRequestSchema)` to create a new message. */ export const GetAPITokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 175); + messageDesc(file_api_service_v1alpha1_service, 168); /** * GetAPITokenResponse contains contains the details of a bearer token @@ -5246,7 +4995,7 @@ export type GetAPITokenResponse = Message<"akuity.io.kargo.service.v1alpha1.GetA * Use `create(GetAPITokenResponseSchema)` to create a new message. */ export const GetAPITokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 176); + messageDesc(file_api_service_v1alpha1_service, 169); /** * ListAPITokensRequest is a request to list bearer tokens associated with a @@ -5284,7 +5033,7 @@ export type ListAPITokensRequest = Message<"akuity.io.kargo.service.v1alpha1.Lis * Use `create(ListAPITokensRequestSchema)` to create a new message. */ export const ListAPITokensRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 177); + messageDesc(file_api_service_v1alpha1_service, 170); /** * ListAPITokensResponse contains a list of bearer tokens associated with a @@ -5307,7 +5056,7 @@ export type ListAPITokensResponse = Message<"akuity.io.kargo.service.v1alpha1.Li * Use `create(ListAPITokensResponseSchema)` to create a new message. */ export const ListAPITokensResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 178); + messageDesc(file_api_service_v1alpha1_service, 171); /** * @generated from message akuity.io.kargo.service.v1alpha1.RefreshResourceRequest @@ -5343,7 +5092,7 @@ export type RefreshResourceRequest = Message<"akuity.io.kargo.service.v1alpha1.R * Use `create(RefreshResourceRequestSchema)` to create a new message. */ export const RefreshResourceRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 179); + messageDesc(file_api_service_v1alpha1_service, 172); /** * @generated from message akuity.io.kargo.service.v1alpha1.RefreshResourceResponse @@ -5360,7 +5109,7 @@ export type RefreshResourceResponse = Message<"akuity.io.kargo.service.v1alpha1. * Use `create(RefreshResourceResponseSchema)` to create a new message. */ export const RefreshResourceResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_api_service_v1alpha1_service, 180); + messageDesc(file_api_service_v1alpha1_service, 173); /** * RawFormat specifies the format for raw resource representation. @@ -5499,7 +5248,10 @@ export const KargoService: GenService<{ output: typeof RefreshResourceResponseSchema; }, /** - * ListStages retrieves all stages within a project. + * ListStages retrieves all stages within a project. Pass summary=true to + * receive a lightweight projection intended for list and graph views + * (heavy fields are stripped from each returned Stage; see the summary + * field on ListStagesRequest for details). * * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.ListStages */ @@ -5508,19 +5260,6 @@ export const KargoService: GenService<{ input: typeof ListStagesRequestSchema; output: typeof ListStagesResponseSchema; }, - /** - * ListStageSummaries retrieves a lightweight projection of Stages within a - * project, containing only the fields typically required to render list - * and graph views. Use GetStage to retrieve the full Stage resource when - * detail-level fields are needed. - * - * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.ListStageSummaries - */ - listStageSummaries: { - methodKind: "unary"; - input: typeof ListStageSummariesRequestSchema; - output: typeof ListStageSummariesResponseSchema; - }, /** * ListImages returns available images and their usage across stages. * @@ -5544,7 +5283,7 @@ export const KargoService: GenService<{ /** * GetStageHealthOutputs returns the raw health output blob for the * specified Stages in a project. Intended for clients that use - * ListStageSummaries for the list and need to resolve per-argocd-app + * ListStages with summary=true and need to resolve per-argocd-app * health only for the Stages currently in viewport. Stages that do not * exist or have no health output recorded are omitted from the response. * @@ -5557,6 +5296,7 @@ export const KargoService: GenService<{ }, /** * WatchStages provides a streaming interface to monitor stage changes. + * Pass summary=true to apply the same projection as ListStages. * * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.WatchStages */ @@ -5565,18 +5305,6 @@ export const KargoService: GenService<{ input: typeof WatchStagesRequestSchema; output: typeof WatchStagesResponseSchema; }, - /** - * WatchStageSummaries provides a streaming interface to monitor stage - * changes, returning the same lightweight projection as - * ListStageSummaries for each event. - * - * @generated from rpc akuity.io.kargo.service.v1alpha1.KargoService.WatchStageSummaries - */ - watchStageSummaries: { - methodKind: "server_streaming"; - input: typeof WatchStageSummariesRequestSchema; - output: typeof WatchStageSummariesResponseSchema; - }, /** * DeleteStage removes a stage from the system. * diff --git a/ui/src/gen/api/v2/core/core.ts b/ui/src/gen/api/v2/core/core.ts index a2d4b72077..7177595858 100644 --- a/ui/src/gen/api/v2/core/core.ts +++ b/ui/src/gen/api/v2/core/core.ts @@ -29,10 +29,8 @@ import type { Freight, GetStageHealthOutputsParams, GithubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponse, - GithubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse, ListImages200, ListPromotionsParams, - ListStageSummariesParams, ListStagesParams, PatchConfigMapRequestBody, PatchFreightAliasParams, @@ -2904,7 +2902,7 @@ export const useRefreshPromotion = ( * Return the raw health output blob for the specified Stages in a project. Stages that do not exist or have no recorded health output are omitted from the response. Intended for -clients that use ListStageSummaries (which omits the output +clients that use ListStages with summary=true (which omits the output blob) and need to lazily resolve health for Stages currently in viewport. * @summary Get Stage Health Outputs @@ -3087,181 +3085,10 @@ export function useGetStageHealthOutputs< return query; } -/** - * List a lightweight projection of Stage resources from a -project's namespace. Intended for UI list and graph views that -need metadata and current state for many Stages at once but do -not need full FreightHistory, PromotionTemplate steps, or -Verification configuration. Use GetStage for detail fields. - * @summary List Stage Summaries - */ -export type listStageSummariesResponse200 = { - data: GithubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse; - status: 200; -}; - -export type listStageSummariesResponseSuccess = listStageSummariesResponse200 & { - headers: Headers; -}; -export type listStageSummariesResponse = listStageSummariesResponseSuccess; - -export const getListStageSummariesUrl = (project: string, params?: ListStageSummariesParams) => { - const normalizedParams = new URLSearchParams(); - - Object.entries(params || {}).forEach(([key, value]) => { - const explodeParameters = ['freightOrigins']; - - if (Array.isArray(value) && explodeParameters.includes(key)) { - value.forEach((v) => { - normalizedParams.append(key, v === null ? 'null' : v.toString()); - }); - return; - } - - if (value !== undefined) { - normalizedParams.append(key, value === null ? 'null' : value.toString()); - } - }); - - const stringifiedParams = normalizedParams.toString(); - - return stringifiedParams.length > 0 - ? `/v1beta1/projects/${project}/stage-summaries?${stringifiedParams}` - : `/v1beta1/projects/${project}/stage-summaries`; -}; - -export const listStageSummaries = async ( - project: string, - params?: ListStageSummariesParams, - options?: RequestInit -): Promise => { - return customFetch(getListStageSummariesUrl(project, params), { - ...options, - method: 'GET' - }); -}; - -export const getListStageSummariesQueryKey = ( - project?: string, - params?: ListStageSummariesParams -) => { - return [`/v1beta1/projects/${project}/stage-summaries`, ...(params ? [params] : [])] as const; -}; - -export const getListStageSummariesQueryOptions = < - TData = Awaited>, - TError = unknown ->( - project: string, - params?: ListStageSummariesParams, - options?: { - query?: Partial>, TError, TData>>; - request?: SecondParameter; - } -) => { - const { query: queryOptions, request: requestOptions } = options ?? {}; - - const queryKey = queryOptions?.queryKey ?? getListStageSummariesQueryKey(project, params); - - const queryFn: QueryFunction>> = () => - listStageSummaries(project, params, requestOptions); - - return { queryKey, queryFn, enabled: !!project, ...queryOptions } as UseQueryOptions< - Awaited>, - TError, - TData - > & { queryKey: DataTag }; -}; - -export type ListStageSummariesQueryResult = NonNullable< - Awaited> ->; -export type ListStageSummariesQueryError = unknown; - -export function useListStageSummaries< - TData = Awaited>, - TError = unknown ->( - project: string, - params: undefined | ListStageSummariesParams, - options: { - query: Partial>, TError, TData>> & - Pick< - DefinedInitialDataOptions< - Awaited>, - TError, - Awaited> - >, - 'initialData' - >; - request?: SecondParameter; - }, - queryClient?: QueryClient -): DefinedUseQueryResult & { queryKey: DataTag }; -export function useListStageSummaries< - TData = Awaited>, - TError = unknown ->( - project: string, - params?: ListStageSummariesParams, - options?: { - query?: Partial< - UseQueryOptions>, TError, TData> - > & - Pick< - UndefinedInitialDataOptions< - Awaited>, - TError, - Awaited> - >, - 'initialData' - >; - request?: SecondParameter; - }, - queryClient?: QueryClient -): UseQueryResult & { queryKey: DataTag }; -export function useListStageSummaries< - TData = Awaited>, - TError = unknown ->( - project: string, - params?: ListStageSummariesParams, - options?: { - query?: Partial>, TError, TData>>; - request?: SecondParameter; - }, - queryClient?: QueryClient -): UseQueryResult & { queryKey: DataTag }; -/** - * @summary List Stage Summaries - */ - -export function useListStageSummaries< - TData = Awaited>, - TError = unknown ->( - project: string, - params?: ListStageSummariesParams, - options?: { - query?: Partial>, TError, TData>>; - request?: SecondParameter; - }, - queryClient?: QueryClient -): UseQueryResult & { queryKey: DataTag } { - const queryOptions = getListStageSummariesQueryOptions(project, params, options); - - const query = useQuery(queryOptions, queryClient) as UseQueryResult & { - queryKey: DataTag; - }; - - query.queryKey = queryOptions.queryKey; - - return query; -} - /** * List Stage resources from a project's namespace. Returns a -StageList resource. +StageList resource. Pass summary=true to receive a lightweight +projection for list and graph views. * @summary List Stages */ export type listStagesResponse200 = { diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse.ts deleted file mode 100644 index 2ee4a9ee44..0000000000 --- a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Generated by orval v7.19.0 🍺 - * Do not edit manually. - * Kargo API - * REST API for Kargo - * OpenAPI spec version: v1alpha1 - */ -import type { GithubComAkuityKargoApiServiceV1alpha1StageSummary } from './githubComAkuityKargoApiServiceV1alpha1StageSummary'; - -export interface GithubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse { - /** resourceVersion is the Kubernetes ResourceVersion of the underlying -StageList. Clients may pass this value to WatchStageSummaries to begin -watching from the exact point this list was taken, receiving only -subsequent changes without redundant initial events. */ - resource_version?: string; - /** stageSummaries is the list of StageSummary objects found in the project. */ - stage_summaries?: GithubComAkuityKargoApiServiceV1alpha1StageSummary[]; -} diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSpecSummary.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSpecSummary.ts deleted file mode 100644 index e58dfeeb02..0000000000 --- a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSpecSummary.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Generated by orval v7.19.0 🍺 - * Do not edit manually. - * Kargo API - * REST API for Kargo - * OpenAPI spec version: v1alpha1 - */ -import type { FreightRequest } from './freightRequest'; - -export interface GithubComAkuityKargoApiServiceV1alpha1StageSpecSummary { - /** hasVerification indicates whether the Stage defines a Verification. -Use GetStage to retrieve the full Verification configuration. */ - has_verification?: boolean; - /** promotionStepCount is the number of promotion steps defined in the -Stage's PromotionTemplate, or zero if no PromotionTemplate is defined. -Use GetStage to retrieve the full step configuration. */ - promotion_step_count?: number; - /** requestedFreight mirrors StageSpec.requestedFreight. This is needed in -full to render graph edges between Stages and their upstream sources. */ - requested_freight?: FreightRequest[]; - /** shard is the name of the shard that the Stage belongs to, mirroring -StageSpec.shard. */ - shard?: string; -} diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageStatusSummary.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageStatusSummary.ts deleted file mode 100644 index f5517cd9c2..0000000000 --- a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageStatusSummary.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Generated by orval v7.19.0 🍺 - * Do not edit manually. - * Kargo API - * REST API for Kargo - * OpenAPI spec version: v1alpha1 - */ -import type { V1Condition } from './v1Condition'; -import type { FreightCollection } from './freightCollection'; -import type { PromotionReference } from './promotionReference'; -import type { Health } from './health'; - -export interface GithubComAkuityKargoApiServiceV1alpha1StageStatusSummary { - /** autoPromotionEnabled mirrors StageStatus.autoPromotionEnabled. */ - auto_promotion_enabled?: boolean; - /** conditions mirrors StageStatus.conditions. */ - conditions?: V1Condition[]; - /** currentFreight is the FreightCollection currently deployed to the Stage -(i.e. index 0 of StageStatus.freightHistory), or null if no Freight has -been deployed. Use GetStage to retrieve the full FreightHistory. */ - current_freight?: FreightCollection; - /** currentPromotion mirrors StageStatus.currentPromotion. */ - current_promotion?: PromotionReference; - /** health mirrors StageStatus.health. */ - health?: Health; - /** lastHandledRefresh mirrors StageStatus.lastHandledRefresh. */ - last_handled_refresh?: string; - /** lastPromotion mirrors StageStatus.lastPromotion. */ - last_promotion?: PromotionReference; - /** observedGeneration mirrors StageStatus.observedGeneration. */ - observed_generation?: number; -} diff --git a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSummary.ts b/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSummary.ts deleted file mode 100644 index 8cbf6aa416..0000000000 --- a/ui/src/gen/api/v2/models/githubComAkuityKargoApiServiceV1alpha1StageSummary.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Generated by orval v7.19.0 🍺 - * Do not edit manually. - * Kargo API - * REST API for Kargo - * OpenAPI spec version: v1alpha1 - */ -import type { V1ObjectMeta } from './v1ObjectMeta'; -import type { GithubComAkuityKargoApiServiceV1alpha1StageSpecSummary } from './githubComAkuityKargoApiServiceV1alpha1StageSpecSummary'; -import type { GithubComAkuityKargoApiServiceV1alpha1StageStatusSummary } from './githubComAkuityKargoApiServiceV1alpha1StageStatusSummary'; - -export interface GithubComAkuityKargoApiServiceV1alpha1StageSummary { - /** metadata contains the Stage's identity and Kubernetes object metadata. */ - metadata?: V1ObjectMeta; - /** spec contains the subset of StageSpec fields needed by list/graph views. */ - spec?: GithubComAkuityKargoApiServiceV1alpha1StageSpecSummary; - /** status contains the subset of StageStatus fields needed by list/graph views. */ - status?: GithubComAkuityKargoApiServiceV1alpha1StageStatusSummary; -} diff --git a/ui/src/gen/api/v2/models/index.ts b/ui/src/gen/api/v2/models/index.ts index 7a12f04296..66dc9d214d 100644 --- a/ui/src/gen/api/v2/models/index.ts +++ b/ui/src/gen/api/v2/models/index.ts @@ -90,10 +90,6 @@ export * from './gitLabWebhookReceiverConfig'; export * from './giteaWebhookReceiverConfig'; export * from './githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponse'; export * from './githubComAkuityKargoApiServiceV1alpha1GetStageHealthOutputsResponseHealthOutputs'; -export * from './githubComAkuityKargoApiServiceV1alpha1ListStageSummariesResponse'; -export * from './githubComAkuityKargoApiServiceV1alpha1StageSpecSummary'; -export * from './githubComAkuityKargoApiServiceV1alpha1StageStatusSummary'; -export * from './githubComAkuityKargoApiServiceV1alpha1StageSummary'; export * from './grantRequest'; export * from './harborWebhookReceiverConfig'; export * from './health'; @@ -114,7 +110,6 @@ export * from './listImages200'; export * from './listProjectAPITokensParams'; export * from './listProjectRoles200'; export * from './listPromotionsParams'; -export * from './listStageSummariesParams'; export * from './listStagesParams'; export * from './listSystemAPITokensParams'; export * from './listSystemRoles200'; diff --git a/ui/src/gen/api/v2/models/listStageSummariesParams.ts b/ui/src/gen/api/v2/models/listStageSummariesParams.ts deleted file mode 100644 index 551e069dda..0000000000 --- a/ui/src/gen/api/v2/models/listStageSummariesParams.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Generated by orval v7.19.0 🍺 - * Do not edit manually. - * Kargo API - * REST API for Kargo - * OpenAPI spec version: v1alpha1 - */ - -export type ListStageSummariesParams = { - /** - * Warehouse name(s) to filter by - */ - freightOrigins?: string[]; -}; diff --git a/ui/src/gen/api/v2/models/listStagesParams.ts b/ui/src/gen/api/v2/models/listStagesParams.ts index ac700f043d..690a70b883 100644 --- a/ui/src/gen/api/v2/models/listStagesParams.ts +++ b/ui/src/gen/api/v2/models/listStagesParams.ts @@ -11,4 +11,8 @@ export type ListStagesParams = { * Warehouse names to filter Stages by */ freightOrigins?: string[]; + /** + * Strip heavy fields from each Stage + */ + summary?: boolean; }; From ab690aaa64120e2a5962f0945d710164ff2d7e6c Mon Sep 17 00:00:00 2001 From: Jacob Boykin Date: Fri, 24 Apr 2026 14:04:41 -0400 Subject: [PATCH 6/7] refactor(api): move Stage summary and health-outputs helpers to pkg/api MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Promotes two helpers that were living in pkg/server to pkg/api/stage.go, alongside GetStage, ListFreightAvailableToStage, and the rest of the Stage-domain operations. Both are now exported and unit-tested: - StripStageForSummary: in-place projection that clears heavy fields (freightHistory[1..], promotionTemplate step configs, health.output) from a Stage. Previously a package-private helper in pkg/server/list_stages_v1alpha1.go. - ListStageHealthOutputs: given a project and a set of Stage names, returns map[name]raw-health-output. Previously inlined (twice — once for the ConnectRPC handler and once for the REST handler) in pkg/server/get_stage_health_outputs_v1alpha1.go, alongside a private uniqueNonEmptyStrings helper that is now folded into the exported function. The server handlers are now thin adapters that validate transport-level concerns (batch-size cap) and delegate domain work to pkg/api. This matches the convention #6163 establishes for StageMatchesAnyWarehouse / ListStagesByWarehouses. Signed-off-by: Jacob Boykin Signed-off-by: Jacob Boykin --- pkg/api/stage.go | 70 +++++ pkg/api/stage_test.go | 275 ++++++++++++++++++ .../get_stage_health_outputs_v1alpha1.go | 74 +---- pkg/server/list_stages_v1alpha1.go | 35 +-- pkg/server/watch_stages_v1alpha1.go | 3 +- 5 files changed, 365 insertions(+), 92 deletions(-) diff --git a/pkg/api/stage.go b/pkg/api/stage.go index 969c05714d..52c5ac7f4e 100644 --- a/pkg/api/stage.go +++ b/pkg/api/stage.go @@ -270,3 +270,73 @@ func AbortStageFreightVerification( } return patchAnnotation(ctx, c, stage, kargoapi.AnnotationKeyAbort, ar.String()) } + +// StripStageForSummary mutates the Stage in place, clearing the heavy +// payload fields that list and graph views do not need. The surviving +// shape still preserves has-verification and promotion-step-count +// information (via stage.Spec.Verification != nil and +// len(stage.Spec.PromotionTemplate.Spec.Steps)), so callers do not have +// to refetch via GetStage for those bits. +// +// Stripped fields: +// - status.freightHistory truncated to the current element (index 0) +// - spec.promotionTemplate.spec.steps[*].config cleared (kind/as/name kept) +// - status.health.output cleared (use ListStageHealthOutputs for lazy fetch) +func StripStageForSummary(stage *kargoapi.Stage) { + if stage == nil { + return + } + if len(stage.Status.FreightHistory) > 1 { + stage.Status.FreightHistory = stage.Status.FreightHistory[:1] + } + if stage.Spec.PromotionTemplate != nil { + for i := range stage.Spec.PromotionTemplate.Spec.Steps { + stage.Spec.PromotionTemplate.Spec.Steps[i].Config = nil + } + } + if stage.Status.Health != nil { + stage.Status.Health.Output = nil + } +} + +// ListStageHealthOutputs returns the raw health output blob for each Stage +// in the given project whose name appears in stageNames. Empty and duplicate +// entries in stageNames are ignored. Stages that do not exist in the project +// or have no recorded health output are omitted from the returned map. +// +// Intended for clients that list Stages with the summary projection (see +// StripStageForSummary) and need to lazily resolve per-Stage health only for +// the subset currently in viewport. +func ListStageHealthOutputs( + ctx context.Context, + c client.Client, + project string, + stageNames []string, +) (map[string][]byte, error) { + wanted := make(map[string]struct{}, len(stageNames)) + for _, n := range stageNames { + if n == "" { + continue + } + wanted[n] = struct{}{} + } + if len(wanted) == 0 { + return map[string][]byte{}, nil + } + var list kargoapi.StageList + if err := c.List(ctx, &list, client.InNamespace(project)); err != nil { + return nil, fmt.Errorf("list stages: %w", err) + } + outputs := make(map[string][]byte, len(wanted)) + for i := range list.Items { + st := &list.Items[i] + if _, want := wanted[st.Name]; !want { + continue + } + if st.Status.Health == nil || st.Status.Health.Output == nil { + continue + } + outputs[st.Name] = st.Status.Health.Output.Raw + } + return outputs, nil +} diff --git a/pkg/api/stage_test.go b/pkg/api/stage_test.go index ece6b86743..b835f1b21e 100644 --- a/pkg/api/stage_test.go +++ b/pkg/api/stage_test.go @@ -633,3 +633,278 @@ func TestAnnotateStageWithArgoCDContext(t *testing.T) { require.NotContains(t, stage.Annotations, kargoapi.AnnotationKeyArgoCDContext) }) } + +func TestStripStageForSummary(t *testing.T) { + rawConfig := &apiextensionsv1.JSON{Raw: []byte(`{"to":"out"}`)} + rawOutput := &apiextensionsv1.JSON{Raw: []byte(`{"status":"Healthy"}`)} + + testCases := []struct { + name string + stage *kargoapi.Stage + assert func(*testing.T, *kargoapi.Stage) + }{ + { + name: "nil Stage is a no-op", + stage: nil, + assert: func(*testing.T, *kargoapi.Stage) {}, + }, + { + name: "empty Stage is left untouched", + stage: &kargoapi.Stage{}, + assert: func(t *testing.T, s *kargoapi.Stage) { + require.Empty(t, s.Status.FreightHistory) + require.Nil(t, s.Spec.PromotionTemplate) + require.Nil(t, s.Status.Health) + }, + }, + { + name: "FreightHistory with one entry is preserved", + stage: &kargoapi.Stage{ + Status: kargoapi.StageStatus{ + FreightHistory: kargoapi.FreightHistory{ + {Freight: map[string]kargoapi.FreightReference{"w": {Name: "f0"}}}, + }, + }, + }, + assert: func(t *testing.T, s *kargoapi.Stage) { + require.Len(t, s.Status.FreightHistory, 1) + require.Equal(t, "f0", s.Status.FreightHistory[0].Freight["w"].Name) + }, + }, + { + name: "FreightHistory is truncated to the current entry", + stage: &kargoapi.Stage{ + Status: kargoapi.StageStatus{ + FreightHistory: kargoapi.FreightHistory{ + {Freight: map[string]kargoapi.FreightReference{"w": {Name: "f0"}}}, + {Freight: map[string]kargoapi.FreightReference{"w": {Name: "f1"}}}, + {Freight: map[string]kargoapi.FreightReference{"w": {Name: "f2"}}}, + }, + }, + }, + assert: func(t *testing.T, s *kargoapi.Stage) { + require.Len(t, s.Status.FreightHistory, 1) + require.Equal(t, "f0", s.Status.FreightHistory[0].Freight["w"].Name) + }, + }, + { + name: "PromotionTemplate step configs are cleared but skeletons kept", + stage: &kargoapi.Stage{ + Spec: kargoapi.StageSpec{ + PromotionTemplate: &kargoapi.PromotionTemplate{ + Spec: kargoapi.PromotionTemplateSpec{ + Steps: []kargoapi.PromotionStep{ + {Uses: "copy", As: "step-0", Config: rawConfig}, + {Uses: "helm-update-image", As: "step-1", Config: rawConfig}, + }, + }, + }, + }, + }, + assert: func(t *testing.T, s *kargoapi.Stage) { + require.Len(t, s.Spec.PromotionTemplate.Spec.Steps, 2) + require.Equal(t, "copy", s.Spec.PromotionTemplate.Spec.Steps[0].Uses) + require.Equal(t, "step-0", s.Spec.PromotionTemplate.Spec.Steps[0].As) + require.Nil(t, s.Spec.PromotionTemplate.Spec.Steps[0].Config) + require.Equal(t, "helm-update-image", s.Spec.PromotionTemplate.Spec.Steps[1].Uses) + require.Nil(t, s.Spec.PromotionTemplate.Spec.Steps[1].Config) + }, + }, + { + name: "nil PromotionTemplate is left untouched", + stage: &kargoapi.Stage{ + Spec: kargoapi.StageSpec{PromotionTemplate: nil}, + }, + assert: func(t *testing.T, s *kargoapi.Stage) { + require.Nil(t, s.Spec.PromotionTemplate) + }, + }, + { + name: "Health.Output is cleared, other Health fields preserved", + stage: &kargoapi.Stage{ + Status: kargoapi.StageStatus{ + Health: &kargoapi.Health{ + Status: kargoapi.HealthStateHealthy, + Output: rawOutput, + }, + }, + }, + assert: func(t *testing.T, s *kargoapi.Stage) { + require.NotNil(t, s.Status.Health) + require.Equal(t, kargoapi.HealthStateHealthy, s.Status.Health.Status) + require.Nil(t, s.Status.Health.Output) + }, + }, + { + name: "nil Health is left untouched", + stage: &kargoapi.Stage{ + Status: kargoapi.StageStatus{Health: nil}, + }, + assert: func(t *testing.T, s *kargoapi.Stage) { + require.Nil(t, s.Status.Health) + }, + }, + } + + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + StripStageForSummary(testCase.stage) + testCase.assert(t, testCase.stage) + }) + } +} + +func TestListStageHealthOutputs(t *testing.T) { + const testProject = "fake-namespace" + const otherProject = "other-namespace" + + scheme := k8sruntime.NewScheme() + require.NoError(t, kargoapi.SchemeBuilder.AddToScheme(scheme)) + + withHealth := func(namespace, name, rawJSON string) *kargoapi.Stage { + return &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Namespace: namespace, Name: name}, + Status: kargoapi.StageStatus{ + Health: &kargoapi.Health{ + Output: &apiextensionsv1.JSON{Raw: []byte(rawJSON)}, + }, + }, + } + } + withoutHealth := func(namespace, name string) *kargoapi.Stage { + return &kargoapi.Stage{ + ObjectMeta: metav1.ObjectMeta{Namespace: namespace, Name: name}, + } + } + + testCases := []struct { + name string + stageNames []string + objects []client.Object + interceptor interceptor.Funcs + assert func(*testing.T, map[string][]byte, error) + }{ + { + name: "nil stageNames returns empty map", + stageNames: nil, + objects: []client.Object{withHealth(testProject, "stage-1", `{"s":1}`)}, + assert: func(t *testing.T, out map[string][]byte, err error) { + require.NoError(t, err) + require.Empty(t, out) + require.NotNil(t, out) + }, + }, + { + name: "only empty strings returns empty map without listing", + stageNames: []string{"", "", ""}, + interceptor: interceptor.Funcs{ + List: func( + context.Context, + client.WithWatch, + client.ObjectList, + ...client.ListOption, + ) error { + t.Fatal("List should not be called when there are no real names") + return nil + }, + }, + assert: func(t *testing.T, out map[string][]byte, err error) { + require.NoError(t, err) + require.Empty(t, out) + }, + }, + { + name: "matching Stage returns its health output", + stageNames: []string{"stage-1"}, + objects: []client.Object{ + withHealth(testProject, "stage-1", `{"s":1}`), + withHealth(testProject, "stage-2", `{"s":2}`), + }, + assert: func(t *testing.T, out map[string][]byte, err error) { + require.NoError(t, err) + require.Len(t, out, 1) + require.JSONEq(t, `{"s":1}`, string(out["stage-1"])) + }, + }, + { + name: "duplicate entries are deduplicated", + stageNames: []string{"stage-1", "stage-1", ""}, + objects: []client.Object{ + withHealth(testProject, "stage-1", `{"s":1}`), + }, + assert: func(t *testing.T, out map[string][]byte, err error) { + require.NoError(t, err) + require.Len(t, out, 1) + require.JSONEq(t, `{"s":1}`, string(out["stage-1"])) + }, + }, + { + name: "Stage without health output is omitted", + stageNames: []string{"stage-1", "stage-no-health"}, + objects: []client.Object{ + withHealth(testProject, "stage-1", `{"s":1}`), + withoutHealth(testProject, "stage-no-health"), + }, + assert: func(t *testing.T, out map[string][]byte, err error) { + require.NoError(t, err) + require.Len(t, out, 1) + require.Contains(t, out, "stage-1") + require.NotContains(t, out, "stage-no-health") + }, + }, + { + name: "unknown name is silently omitted", + stageNames: []string{"stage-1", "does-not-exist"}, + objects: []client.Object{withHealth(testProject, "stage-1", `{"s":1}`)}, + assert: func(t *testing.T, out map[string][]byte, err error) { + require.NoError(t, err) + require.Len(t, out, 1) + require.Contains(t, out, "stage-1") + }, + }, + { + name: "Stages in other namespaces are not returned", + stageNames: []string{"stage-1"}, + objects: []client.Object{ + withHealth(testProject, "stage-1", `{"s":"ours"}`), + withHealth(otherProject, "stage-1", `{"s":"theirs"}`), + }, + assert: func(t *testing.T, out map[string][]byte, err error) { + require.NoError(t, err) + require.Len(t, out, 1) + require.JSONEq(t, `{"s":"ours"}`, string(out["stage-1"])) + }, + }, + { + name: "List error propagates", + stageNames: []string{"stage-1"}, + interceptor: interceptor.Funcs{ + List: func( + context.Context, + client.WithWatch, + client.ObjectList, + ...client.ListOption, + ) error { + return errors.New("boom") + }, + }, + assert: func(t *testing.T, out map[string][]byte, err error) { + require.ErrorContains(t, err, "boom") + require.Nil(t, out) + }, + }, + } + + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + c := fake.NewClientBuilder().WithScheme(scheme). + WithObjects(testCase.objects...). + WithInterceptorFuncs(testCase.interceptor). + Build() + out, err := ListStageHealthOutputs( + t.Context(), c, testProject, testCase.stageNames, + ) + testCase.assert(t, out, err) + }) + } +} diff --git a/pkg/server/get_stage_health_outputs_v1alpha1.go b/pkg/server/get_stage_health_outputs_v1alpha1.go index 3bffd4b71e..b8b9921e9c 100644 --- a/pkg/server/get_stage_health_outputs_v1alpha1.go +++ b/pkg/server/get_stage_health_outputs_v1alpha1.go @@ -7,10 +7,9 @@ import ( "connectrpc.com/connect" "github.com/gin-gonic/gin" - "sigs.k8s.io/controller-runtime/pkg/client" svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" - kargoapi "github.com/akuity/kargo/api/v1alpha1" + "github.com/akuity/kargo/pkg/api" ) // maxStageHealthOutputsBatch is a soft limit on the number of Stage names a @@ -22,8 +21,8 @@ const maxStageHealthOutputsBatch = 1000 // GetStageHealthOutputs returns the raw health output blob for the specified // Stages in a project. Stages that do not exist or have no health output // recorded are omitted from the response map. Intended for clients that use -// ListStages with summary=true for the list and lazily resolve per-argocd-app health -// for Stages currently in viewport. +// ListStages with summary=true for the list and lazily resolve per-argocd-app +// health for Stages currently in viewport. func (s *server) GetStageHealthOutputs( ctx context.Context, req *connect.Request[svcv1alpha1.GetStageHealthOutputsRequest], @@ -37,35 +36,20 @@ func (s *server) GetStageHealthOutputs( return nil, err } - wanted := uniqueNonEmptyStrings(req.Msg.GetStageNames()) - if len(wanted) == 0 { - return connect.NewResponse(&svcv1alpha1.GetStageHealthOutputsResponse{}), nil - } - if len(wanted) > maxStageHealthOutputsBatch { + stageNames := req.Msg.GetStageNames() + if len(stageNames) > maxStageHealthOutputsBatch { return nil, connect.NewError( connect.CodeInvalidArgument, fmt.Errorf( "stage_names exceeds maximum batch size of %d (got %d)", - maxStageHealthOutputsBatch, len(wanted), + maxStageHealthOutputsBatch, len(stageNames), ), ) } - var list kargoapi.StageList - if err := s.client.List(ctx, &list, client.InNamespace(project)); err != nil { - return nil, fmt.Errorf("list stages: %w", err) - } - - outputs := make(map[string][]byte, len(wanted)) - for i := range list.Items { - st := &list.Items[i] - if _, want := wanted[st.Name]; !want { - continue - } - if st.Status.Health == nil || st.Status.Health.Output == nil { - continue - } - outputs[st.Name] = st.Status.Health.Output.Raw + outputs, err := api.ListStageHealthOutputs(ctx, s.client, project, stageNames) + if err != nil { + return nil, err } return connect.NewResponse(&svcv1alpha1.GetStageHealthOutputsResponse{ @@ -92,52 +76,22 @@ func (s *server) getStageHealthOutputs(c *gin.Context) { ctx := c.Request.Context() project := c.Param("project") - wanted := uniqueNonEmptyStrings(c.QueryArray("stageNames")) - if len(wanted) == 0 { - c.JSON(http.StatusOK, &svcv1alpha1.GetStageHealthOutputsResponse{}) - return - } - if len(wanted) > maxStageHealthOutputsBatch { + stageNames := c.QueryArray("stageNames") + if len(stageNames) > maxStageHealthOutputsBatch { _ = c.Error(fmt.Errorf( "stageNames exceeds maximum batch size of %d (got %d)", - maxStageHealthOutputsBatch, len(wanted), + maxStageHealthOutputsBatch, len(stageNames), )) return } - list := &kargoapi.StageList{} - if err := s.client.List(ctx, list, client.InNamespace(project)); err != nil { + outputs, err := api.ListStageHealthOutputs(ctx, s.client, project, stageNames) + if err != nil { _ = c.Error(err) return } - outputs := make(map[string][]byte, len(wanted)) - for i := range list.Items { - st := &list.Items[i] - if _, want := wanted[st.Name]; !want { - continue - } - if st.Status.Health == nil || st.Status.Health.Output == nil { - continue - } - outputs[st.Name] = st.Status.Health.Output.Raw - } - c.JSON(http.StatusOK, &svcv1alpha1.GetStageHealthOutputsResponse{ HealthOutputs: outputs, }) } - -// uniqueNonEmptyStrings returns a set of the non-empty entries in names, -// deduplicated. Returns an empty (non-nil) map if no non-empty entries are -// present. -func uniqueNonEmptyStrings(names []string) map[string]struct{} { - set := make(map[string]struct{}, len(names)) - for _, n := range names { - if n == "" { - continue - } - set[n] = struct{}{} - } - return set -} diff --git a/pkg/server/list_stages_v1alpha1.go b/pkg/server/list_stages_v1alpha1.go index 172e412062..43c1920c72 100644 --- a/pkg/server/list_stages_v1alpha1.go +++ b/pkg/server/list_stages_v1alpha1.go @@ -14,6 +14,7 @@ import ( svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" kargoapi "github.com/akuity/kargo/api/v1alpha1" + "github.com/akuity/kargo/pkg/api" "github.com/akuity/kargo/pkg/logging" ) @@ -45,7 +46,7 @@ func (s *server) ListStages( stages := make([]*kargoapi.Stage, len(items)) for idx := range items { if summary { - stripStageForSummary(&items[idx]) + api.StripStageForSummary(&items[idx]) } stages[idx] = &items[idx] } @@ -55,34 +56,6 @@ func (s *server) ListStages( }), nil } -// stripStageForSummary mutates the Stage in place, clearing the heavy -// payload fields that list and graph views do not need. The surviving -// shape still preserves has-verification and promotion-step-count -// information (via stage.Spec.Verification != nil and -// len(stage.Spec.PromotionTemplate.Spec.Steps)), so callers do not have -// to refetch via GetStage for those bits. -// -// Stripped fields: -// - status.freightHistory truncated to the current element (index 0) -// - spec.promotionTemplate.spec.steps[*].config cleared (kind/as/name kept) -// - status.health.output cleared (use GetStageHealthOutputs for lazy fetch) -func stripStageForSummary(stage *kargoapi.Stage) { - if stage == nil { - return - } - if len(stage.Status.FreightHistory) > 1 { - stage.Status.FreightHistory = stage.Status.FreightHistory[:1] - } - if stage.Spec.PromotionTemplate != nil { - for i := range stage.Spec.PromotionTemplate.Spec.Steps { - stage.Spec.PromotionTemplate.Spec.Steps[i].Config = nil - } - } - if stage.Status.Health != nil { - stage.Status.Health.Output = nil - } -} - // @id ListStages // @Summary List Stages // @Description List Stage resources from a project's namespace. Returns a @@ -115,7 +88,7 @@ func (s *server) listStages(c *gin.Context) { if summary { for i := range items { - stripStageForSummary(&items[i]) + api.StripStageForSummary(&items[i]) } } @@ -171,7 +144,7 @@ func (s *server) watchStages( } if summary { - stripStageForSummary(stage) + api.StripStageForSummary(stage) } if !sendSSEWatchEvent(c, e.Type, stage) { diff --git a/pkg/server/watch_stages_v1alpha1.go b/pkg/server/watch_stages_v1alpha1.go index 9b7c29ff8c..573da513c5 100644 --- a/pkg/server/watch_stages_v1alpha1.go +++ b/pkg/server/watch_stages_v1alpha1.go @@ -10,6 +10,7 @@ import ( svcv1alpha1 "github.com/akuity/kargo/api/service/v1alpha1" kargoapi "github.com/akuity/kargo/api/v1alpha1" + "github.com/akuity/kargo/pkg/api" "github.com/akuity/kargo/pkg/logging" ) @@ -72,7 +73,7 @@ func (s *server) WatchStages( continue } if summary { - stripStageForSummary(stage) + api.StripStageForSummary(stage) } if err := stream.Send(&svcv1alpha1.WatchStagesResponse{ Stage: stage, From 493ec531ce4df4576d12d8c8757e9cdc7c7ca8dc Mon Sep 17 00:00:00 2001 From: Jacob Boykin Date: Fri, 24 Apr 2026 14:46:22 -0400 Subject: [PATCH 7/7] fix(ci): drop unused proto import and pass resourceVersion in watcher cache update - Remove the meta/v1/generated.proto import from service.proto; it was only used by the StageSummary messages that this PR replaced with a summary flag on ListStages. - The new required ListStagesResponse.resource_version field requires UI callers constructing the response shape to populate it. The pipeline watcher's cache-update path has no authoritative RV on hand (it's merging incremental Stage watch events), so it passes an empty string. The list-then-watch RV flow itself continues to be handled by ListStages's own response, not by this cache-update path. Signed-off-by: Jacob Boykin Signed-off-by: Jacob Boykin --- api/service/v1alpha1/service.pb.go | 3588 ++++++++--------- api/service/v1alpha1/service.proto | 1 - ui/src/features/project/pipelines/watcher.ts | 1 + ui/src/gen/api/service/v1alpha1/service_pb.ts | 3 +- 4 files changed, 1794 insertions(+), 1799 deletions(-) diff --git a/api/service/v1alpha1/service.pb.go b/api/service/v1alpha1/service.pb.go index cbae61715a..213fb33138 100644 --- a/api/service/v1alpha1/service.pb.go +++ b/api/service/v1alpha1/service.pb.go @@ -15,7 +15,6 @@ import ( anypb "google.golang.org/protobuf/types/known/anypb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" v1 "k8s.io/api/core/v1" - _ "k8s.io/apimachinery/pkg/apis/meta/v1" reflect "reflect" sync "sync" ) @@ -10720,360 +10719,607 @@ var file_api_service_v1alpha1_service_proto_rawDesc = []byte{ 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x6b, 0x38, 0x73, 0x2e, 0x69, - 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x72, 0x79, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x2f, 0x76, 0x31, 0x2f, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x2b, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, - 0x75, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x61, 0x70, - 0x69, 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb8, 0x01, 0x0a, 0x11, 0x43, - 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, - 0x00, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x03, - 0x63, 0x6c, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x61, 0x70, 0x69, 0x2f, 0x73, + 0x74, 0x75, 0x62, 0x73, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2f, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x62, 0x61, 0x63, + 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb8, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x06, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x03, 0x63, 0x6c, 0x69, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x66, 0x6f, 0x48, 0x01, 0x52, 0x03, 0x63, 0x6c, 0x69, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x63, 0x6c, 0x69, 0x22, + 0xfe, 0x01, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, + 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, + 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x67, 0x69, 0x74, 0x5f, + 0x74, 0x72, 0x65, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x67, 0x69, 0x74, 0x54, 0x72, 0x65, 0x65, 0x44, 0x69, 0x72, 0x74, 0x79, 0x12, 0x39, + 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, + 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, + 0x69, 0x6c, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, + 0x69, 0x6c, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x47, 0x65, 0x74, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x01, 0x52, 0x03, 0x63, 0x6c, 0x69, 0x88, - 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x06, 0x0a, - 0x04, 0x5f, 0x63, 0x6c, 0x69, 0x22, 0xfe, 0x01, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x1d, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x24, - 0x0a, 0x0e, 0x67, 0x69, 0x74, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x74, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x67, 0x69, 0x74, 0x54, 0x72, 0x65, 0x65, 0x44, - 0x69, 0x72, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x6a, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0c, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x12, 0x0a, 0x10, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x3d, 0x0a, 0x0b, 0x41, 0x72, 0x67, 0x6f, 0x43, 0x44, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xb4, - 0x03, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0d, 0x61, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x41, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0c, 0x61, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, - 0x12, 0x3a, 0x0a, 0x19, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x17, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x1a, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x18, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x22, 0x68, 0x61, - 0x73, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x6c, - 0x6f, 0x67, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x68, 0x61, 0x73, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x55, 0x72, 0x6c, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, 0x6e, 0x0a, 0x11, 0x41, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x53, - 0x68, 0x61, 0x72, 0x64, 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, 0x43, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, - 0x72, 0x67, 0x6f, 0x43, 0x44, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0xb9, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0b, 0x6f, - 0x69, 0x64, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x49, 0x44, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, - 0x6f, 0x69, 0x64, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x73, 0x6b, 0x69, 0x70, 0x41, 0x75, 0x74, 0x68, 0x22, 0x84, 0x01, 0x0a, 0x0a, - 0x4f, 0x49, 0x44, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x22, - 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x11, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x22, 0x2f, 0x0a, 0x12, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x64, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x64, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x33, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x14, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, - 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3b, 0x0a, - 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0xbc, 0x01, 0x0a, 0x1c, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3d, 0x0a, 0x0b, 0x41, 0x72, 0x67, + 0x6f, 0x43, 0x44, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0xb4, 0x03, 0x0a, 0x11, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, + 0x0a, 0x0d, 0x61, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x72, 0x67, 0x6f, 0x63, + 0x64, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x61, 0x72, + 0x67, 0x6f, 0x63, 0x64, 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x73, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x1a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x22, 0x68, 0x61, 0x73, 0x5f, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x75, 0x72, + 0x6c, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x1d, 0x68, 0x61, 0x73, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, + 0x4c, 0x6f, 0x67, 0x73, 0x55, 0x72, 0x6c, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, + 0x6e, 0x0a, 0x11, 0x41, 0x72, 0x67, 0x6f, 0x63, 0x64, 0x53, 0x68, 0x61, 0x72, 0x64, 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, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x72, 0x67, 0x6f, 0x43, 0x44, 0x53, + 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb9, 0x01, 0x0a, 0x17, 0x47, 0x65, + 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0b, 0x6f, 0x69, 0x64, 0x63, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4f, 0x49, + 0x44, 0x43, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, 0x69, 0x64, 0x63, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6b, 0x69, 0x70, + 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x6b, 0x69, + 0x70, 0x41, 0x75, 0x74, 0x68, 0x22, 0x84, 0x01, 0x0a, 0x0a, 0x4f, 0x49, 0x44, 0x43, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x75, + 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, + 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x5f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x63, 0x6c, 0x69, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x11, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x2f, 0x0a, + 0x12, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x33, + 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, + 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, + 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, - 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, - 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, - 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x7a, 0x0a, 0x1e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x33, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x14, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, - 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x33, - 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, - 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, - 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, - 0x52, 0x17, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x70, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x84, 0x01, 0x0a, 0x12, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x43, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x22, 0x2d, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, - 0xd3, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3b, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, + 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, + 0x66, 0x65, 0x73, 0x74, 0x22, 0xbc, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, + 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, + 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x7a, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, - 0x1a, 0x63, 0x0a, 0x0b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, + 0x33, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, + 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, + 0x66, 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x00, 0x52, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x6a, 0x0a, 0x16, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, + 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x33, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, 0x76, 0x0a, + 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x17, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, + 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x50, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x22, 0x70, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6f, 0x72, 0x69, 0x67, + 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x22, 0x84, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, + 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x2d, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x58, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x63, 0x0a, 0x0b, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61, + 0x67, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xba, 0x01, 0x0a, 0x06, 0x54, 0x61, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x67, 0x4d, + 0x61, 0x70, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, + 0x67, 0x73, 0x1a, 0x68, 0x0a, 0x09, 0x54, 0x61, 0x67, 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, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x54, 0x61, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xba, 0x01, 0x0a, 0x06, 0x54, 0x61, 0x67, 0x4d, 0x61, 0x70, - 0x12, 0x46, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, + 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x61, + 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, + 0x0d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x12, 0x53, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x54, 0x61, 0x67, 0x4d, 0x61, 0x70, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0x68, 0x0a, 0x09, 0x54, 0x61, 0x67, 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, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x9f, 0x01, 0x0a, 0x0d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x4d, 0x61, 0x70, 0x12, 0x53, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x4d, 0x61, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x84, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x75, 0x0a, 0x10, 0x47, - 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x43, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x4d, 0x61, 0x70, 0x2e, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x67, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x84, + 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, + 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, + 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x59, 0x0a, 0x1c, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, + 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x0e, 0x68, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x52, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb0, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x66, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x29, + 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x13, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x42, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5c, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, + 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, + 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x69, 0x0a, 0x16, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x57, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, + 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x59, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1f, 0x0a, 0x0b, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xdc, 0x01, - 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x79, 0x0a, 0x0e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x68, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb0, 0x01, 0x0a, - 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6f, 0x72, 0x69, - 0x67, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x6c, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x88, + 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x42, 0x0a, - 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x45, 0x0a, 0x15, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x45, 0x0a, 0x15, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, + 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x0a, 0x11, 0x47, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x49, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, + 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, + 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, + 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x48, 0x01, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x69, + 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x04, 0x6d, 0x69, 0x6e, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x69, 0x6e, 0x65, 0x22, 0x77, + 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x78, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x43, 0x0a, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, + 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, + 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, + 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x35, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x71, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, + 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, + 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x48, 0x00, + 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x49, 0x0a, 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, + 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x73, 0x22, 0x73, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, + 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, + 0x22, 0x67, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, - 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x1a, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x15, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x19, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, - 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x57, 0x0a, - 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x18, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x6c, 0x0a, 0x19, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, + 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, + 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x14, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x1a, 0x68, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x56, 0x0a, 0x0b, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, + 0x65, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6e, 0x65, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x0f, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x76, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, + 0x18, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x41, 0x62, 0x6f, + 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, + 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, + 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, + 0x75, 0x73, 0x65, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, + 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, @@ -11081,1616 +11327,1366 @@ var file_api_service_v1alpha1_service_proto_rawDesc = []byte{ 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, - 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, + 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, + 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, + 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, + 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x45, 0x0a, 0x15, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7b, - 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x45, 0x0a, 0x15, 0x41, - 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x6c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, - 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, - 0x7d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, - 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xc3, - 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x02, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, - 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, - 0x52, 0x04, 0x6d, 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x67, 0x65, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6d, 0x69, 0x6e, 0x65, 0x22, 0x77, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x78, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, - 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, - 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x22, 0x36, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x0a, 0x19, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x8c, - 0x01, 0x0a, 0x1a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, - 0x0e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x71, 0x0a, - 0x15, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, - 0x22, 0x18, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x0a, 0x14, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7d, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x48, 0x00, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, - 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x49, 0x0a, - 0x13, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x73, 0x22, 0x73, 0x0a, 0x14, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x86, 0x01, - 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x67, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x89, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x6c, 0x0a, 0x19, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x13, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x46, 0x0a, 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x18, 0x0a, - 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, - 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, - 0x73, 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x06, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x68, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 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, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x56, 0x0a, 0x0b, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x47, 0x0a, 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, - 0x07, 0x66, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x6c, 0x64, 0x5f, 0x61, 0x6c, 0x69, 0x61, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x6c, 0x64, 0x41, 0x6c, 0x69, 0x61, - 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x1c, - 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x0f, - 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, - 0x12, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x18, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, - 0x1b, 0x0a, 0x19, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x0a, 0x15, - 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, - 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0a, 0x77, 0x61, 0x72, - 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x77, 0x61, + 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x0a, - 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x47, - 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, - 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, - 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, - 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, - 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, - 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x46, 0x0a, - 0x16, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x09, + 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, + 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7c, 0x0a, 0x17, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, - 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x4d, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x72, 0x65, 0x68, - 0x6f, 0x75, 0x73, 0x65, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, - 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xba, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, - 0x74, 0x61, 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, 0x57, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, - 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x69, 0x0a, 0x16, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x54, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xba, 0x02, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x58, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, - 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x22, 0x74, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x57, 0x0a, + 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xba, 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, - 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, - 0x74, 0x61, 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, 0x57, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, - 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x80, 0x02, 0x0a, - 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, - 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, - 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, - 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, - 0x5d, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x4c, - 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x69, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x15, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x22, 0x58, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x22, 0xab, 0x01, 0x0a, + 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x74, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, + 0x61, 0x70, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0xba, 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, - 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, - 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7a, - 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, - 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x03, - 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, - 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x56, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x57, 0x0a, + 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6b, + 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x80, 0x02, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, + 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, + 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, + 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, + 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x4c, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x22, 0x5b, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, - 0x80, 0x02, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, + 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5b, 0x0a, 0x1b, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x80, 0x02, 0x0a, 0x1c, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, + 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, + 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, + 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, + 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x5c, 0x0a, 0x1d, 0x4c, + 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x5e, 0x0a, 0x1e, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, + 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 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, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x55, 0x52, 0x4c, 0x12, - 0x29, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x72, - 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, - 0x55, 0x52, 0x4c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x22, 0x5c, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x12, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, + 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, + 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x4b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, - 0x5e, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, - 0xcc, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, - 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, - 0x0a, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x22, 0xcc, 0x02, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x5f, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, - 0x60, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 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, 0x60, 0x0a, 0x20, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, + 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x72, 0x0a, 0x1f, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, + 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x22, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x22, 0x72, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x22, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x1c, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x95, 0x01, + 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x74, 0x0a, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, + 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xb1, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x10, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, + 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, + 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x4d, 0x0a, 0x1d, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x0a, 0x23, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, + 0x1a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x1a, - 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xb1, 0x01, - 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, - 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x18, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, 0x7c, 0x0a, 0x21, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xcf, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, + 0x01, 0x0a, 0x19, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x48, 0x00, 0x52, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, + 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, + 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x3a, 0x0a, 0x24, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x25, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, + 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, + 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, + 0x9d, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, + 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0c, 0x61, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x40, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, + 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, + 0x75, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, + 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, + 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0x95, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, + 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x22, 0x34, 0x0a, 0x18, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x22, 0x4e, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, + 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x22, 0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x7a, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x73, 0x6b, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, + 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, + 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, - 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, - 0x00, 0x52, 0x10, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x4d, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x24, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x1a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x61, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, + 0x0d, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, + 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, + 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x22, 0x0a, 0x20, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0x97, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, - 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x18, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x61, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x22, - 0x7c, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xcf, 0x01, - 0x0a, 0x22, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x19, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, - 0x6c, 0x6f, 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x17, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, - 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x3a, 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x27, 0x0a, 0x25, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x79, 0x0a, 0x1e, 0x47, 0x65, + 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x65, 0x0a, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, + 0x14, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x58, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, - 0x75, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, - 0x1a, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, - 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, - 0x6b, 0x22, 0x34, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x4e, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, - 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x35, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x7a, - 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0f, - 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x17, 0x47, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x18, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x22, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x17, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x15, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, - 0x22, 0x79, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x1f, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x6a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x73, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x14, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x03, 0x72, - 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, - 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x58, 0x0a, 0x11, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, - 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, - 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, - 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, - 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, - 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x43, - 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x58, - 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, + 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x52, 0x0a, 0x06, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, - 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, - 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, - 0x69, 0x6d, 0x52, 0x06, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x47, - 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, - 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, - 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, - 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x54, 0x0a, 0x0d, 0x47, 0x72, - 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, - 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, - 0x22, 0x72, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x6f, - 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, - 0x73, 0x12, 0x56, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x0d, 0x52, 0x65, - 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, - 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, - 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, - 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x0e, 0x52, 0x65, - 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, - 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xd0, 0x01, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x45, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, + 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, + 0x48, 0x00, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, + 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x52, 0x0a, 0x06, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x6c, + 0x61, 0x69, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x52, 0x06, 0x63, 0x6c, + 0x61, 0x69, 0x6d, 0x73, 0x22, 0xfd, 0x01, 0x0a, 0x0c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, + 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, + 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x54, 0x0a, 0x0d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x72, 0x0a, 0x10, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, + 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, + 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x61, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xb2, + 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x09, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, + 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x69, + 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x69, + 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, + 0x12, 0x67, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x22, 0x58, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x0e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, - 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x58, 0x0a, 0x11, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x43, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, + 0x63, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, + 0x22, 0x85, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, + 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x22, 0x68, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, + 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x22, 0x74, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, + 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, + 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x70, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x57, - 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x68, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x12, - 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x74, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, - 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3f, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x12, 0x12, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, - 0x03, 0x72, 0x61, 0x77, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x70, - 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x58, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0c, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x6b, 0x0a, 0x16, 0x52, 0x65, - 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x17, 0x52, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x2a, 0x51, 0x0a, 0x09, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, - 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, - 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, - 0x5f, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x02, 0x32, 0xc5, 0x57, 0x0a, 0x0c, 0x4b, 0x61, 0x72, 0x67, - 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x37, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, - 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x15, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6b, 0x38, 0x73, + 0x2e, 0x69, 0x6f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x22, 0x6b, 0x0a, 0x16, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x22, 0x4b, 0x0a, 0x17, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2a, 0x51, + 0x0a, 0x09, 0x52, 0x61, 0x77, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x52, + 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x41, 0x57, 0x5f, 0x46, + 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, + 0x52, 0x41, 0x57, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x59, 0x41, 0x4d, 0x4c, 0x10, + 0x02, 0x32, 0xc5, 0x57, 0x0a, 0x0c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, + 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, - 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x33, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, - 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x4c, 0x6f, + 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, - 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, - 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x71, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3e, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x7c, 0x0a, 0x0b, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7a, 0x0a, - 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x61, + 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, + 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, + 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7c, 0x0a, 0x0b, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, + 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7a, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, - 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x68, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, + 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, - 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x0e, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, + 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x85, - 0x01, 0x0a, 0x0e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x62, 0x6f, 0x72, 0x74, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, + 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, - 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x41, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, + 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, - 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x36, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, + 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x33, 0x2e, + 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x74, - 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, - 0x0e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, + 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, - 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7f, - 0x0a, 0x0c, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, + 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x8c, 0x01, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, + 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, + 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, - 0x83, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, - 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x3a, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, + 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, + 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x08, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x12, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x41, 0x62, 0x6f, - 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x71, 0x0a, 0x08, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x31, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, + 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, - 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, - 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, - 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, - 0x0c, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x35, 0x2e, + 0x31, 0x2e, 0x52, 0x65, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, + 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x56, 0x65, 0x72, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, + 0x75, 0x73, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, + 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, - 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, - 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, - 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, - 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x61, + 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, + 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x57, 0x61, 0x72, + 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, + 0x68, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, - 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x98, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, + 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, + 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3b, 0x2e, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, - 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, - 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, + 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, - 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, + 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, - 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 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, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 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, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, - 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 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, 0x12, 0x83, + 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x73, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, + 0x61, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4d, 0x61, 0x70, 0x12, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3e, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, - 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x98, 0x01, 0x0a, + 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, + 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9b, 0x01, 0x0a, + 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xad, 0x01, 0x0a, 0x1c, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x45, 0x2e, 0x61, 0x6b, + 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa7, 0x01, 0x0a, 0x1a, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0xad, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x12, 0x45, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, - 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x46, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, + 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0xa7, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, - 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x47, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, + 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x1d, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x46, 0x2e, 0x61, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x47, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, + 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, - 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0xa4, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x12, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, - 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x39, + 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, + 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x91, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x3b, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, + 0x6b, 0x12, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, + 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x3b, 0x2e, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x77, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xa4, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x42, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x89, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x61, 0x73, 0x6b, 0x12, 0x39, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, - 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x3a, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x17, - 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x40, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, - 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, + 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, + 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x6e, + 0x74, 0x12, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x06, 0x52, 0x65, 0x76, 0x6f, + 0x6b, 0x65, 0x12, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, + 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, + 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, + 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, - 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x61, 0x6b, - 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, - 0x0a, 0x05, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, - 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, - 0x0a, 0x06, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x2f, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, - 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, - 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x0a, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x2e, 0x61, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, + 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, + 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, + 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, - 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x7a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, - 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x68, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7a, 0x0a, 0x0b, 0x47, 0x65, + 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x34, 0x2e, 0x61, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x50, 0x49, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, - 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x36, - 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, - 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, - 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, - 0x93, 0x02, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, - 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2f, 0x6b, 0x61, 0x72, 0x67, - 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x3b, 0x73, 0x76, 0x63, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0xa2, 0x02, 0x04, 0x41, 0x49, 0x4b, 0x53, 0xaa, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, - 0x74, 0x79, 0x2e, 0x49, 0x6f, 0x2e, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x20, 0x41, - 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, - 0x02, 0x2c, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, - 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x24, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x3a, 0x3a, 0x49, 0x6f, 0x3a, 0x3a, 0x4b, 0x61, 0x72, - 0x67, 0x6f, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x36, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x37, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, + 0x67, 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x50, 0x49, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x93, 0x02, 0x0a, 0x24, 0x63, 0x6f, + 0x6d, 0x2e, 0x61, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x69, 0x6f, 0x2e, 0x6b, 0x61, 0x72, 0x67, + 0x6f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, + 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2f, 0x6b, 0x61, 0x72, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, + 0x3b, 0x73, 0x76, 0x63, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xa2, 0x02, 0x04, 0x41, + 0x49, 0x4b, 0x53, 0xaa, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x6f, 0x2e, + 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xca, 0x02, 0x20, 0x41, 0x6b, 0x75, 0x69, 0x74, 0x79, 0x5c, + 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0xe2, 0x02, 0x2c, 0x41, 0x6b, 0x75, 0x69, + 0x74, 0x79, 0x5c, 0x49, 0x6f, 0x5c, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x5c, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x24, 0x41, 0x6b, 0x75, 0x69, 0x74, + 0x79, 0x3a, 0x3a, 0x49, 0x6f, 0x3a, 0x3a, 0x4b, 0x61, 0x72, 0x67, 0x6f, 0x3a, 0x3a, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/service/v1alpha1/service.proto b/api/service/v1alpha1/service.proto index addb615549..eea72fbca6 100644 --- a/api/service/v1alpha1/service.proto +++ b/api/service/v1alpha1/service.proto @@ -5,7 +5,6 @@ package akuity.io.kargo.service.v1alpha1; import "google/protobuf/timestamp.proto"; import "api/v1alpha1/generated.proto"; import "k8s.io/api/core/v1/generated.proto"; -import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "api/stubs/rollouts/v1alpha1/generated.proto"; import "api/rbac/v1alpha1/generated.proto"; import "google/protobuf/any.proto"; diff --git a/ui/src/features/project/pipelines/watcher.ts b/ui/src/features/project/pipelines/watcher.ts index 083a088a3c..0da81e8359 100644 --- a/ui/src/features/project/pipelines/watcher.ts +++ b/ui/src/features/project/pipelines/watcher.ts @@ -103,6 +103,7 @@ export class Watcher { }); this.client.setQueryData(listStagesQueryKey, { stages: data, + resourceVersion: '', $typeName: 'akuity.io.kargo.service.v1alpha1.ListStagesResponse' }); diff --git a/ui/src/gen/api/service/v1alpha1/service_pb.ts b/ui/src/gen/api/service/v1alpha1/service_pb.ts index 6519ce137a..2672454309 100644 --- a/ui/src/gen/api/service/v1alpha1/service_pb.ts +++ b/ui/src/gen/api/service/v1alpha1/service_pb.ts @@ -10,7 +10,6 @@ import type { ClusterConfig, ClusterPromotionTask, Freight, Project, ProjectConf import { file_api_v1alpha1_generated } from "../../v1alpha1/generated_pb"; import type { ConfigMap, Event, Secret } from "../../../k8s.io/api/core/v1/generated_pb"; import { file_k8s_io_api_core_v1_generated } from "../../../k8s.io/api/core/v1/generated_pb"; -import { file_k8s_io_apimachinery_pkg_apis_meta_v1_generated } from "../../../k8s.io/apimachinery/pkg/apis/meta/v1/generated_pb"; import type { AnalysisRun, AnalysisTemplate, ClusterAnalysisTemplate } from "../../stubs/rollouts/v1alpha1/generated_pb"; import { file_api_stubs_rollouts_v1alpha1_generated } from "../../stubs/rollouts/v1alpha1/generated_pb"; import type { Claim, ResourceDetails, Role, RoleResources } from "../../rbac/v1alpha1/generated_pb"; @@ -21,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file api/service/v1alpha1/service.proto. */ export const file_api_service_v1alpha1_service: GenFile = /*@__PURE__*/ - fileDesc("CiJhcGkvc2VydmljZS92MWFscGhhMS9zZXJ2aWNlLnByb3RvEiBha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMSKrAQoRQ29tcG9uZW50VmVyc2lvbnMSQgoGc2VydmVyGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm9IAIgBARI/CgNjbGkYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5WZXJzaW9uSW5mb0gBiAEBQgkKB19zZXJ2ZXJCBgoEX2NsaSKyAQoLVmVyc2lvbkluZm8SDwoHdmVyc2lvbhgBIAEoCRISCgpnaXRfY29tbWl0GAIgASgJEhYKDmdpdF90cmVlX2RpcnR5GAMgASgIEi4KCmJ1aWxkX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdvX3ZlcnNpb24YBSABKAkSEAoIY29tcGlsZXIYBiABKAkSEAoIcGxhdGZvcm0YByABKAkiFwoVR2V0VmVyc2lvbkluZm9SZXF1ZXN0Il0KFkdldFZlcnNpb25JbmZvUmVzcG9uc2USQwoMdmVyc2lvbl9pbmZvGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm8iEgoQR2V0Q29uZmlnUmVxdWVzdCItCgtBcmdvQ0RTaGFyZBILCgN1cmwYASABKAkSEQoJbmFtZXNwYWNlGAIgASgJIsgCChFHZXRDb25maWdSZXNwb25zZRJcCg1hcmdvY2Rfc2hhcmRzGAEgAygLMkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UuQXJnb2NkU2hhcmRzRW50cnkSIQoZc2VjcmV0X21hbmFnZW1lbnRfZW5hYmxlZBgCIAEoCBIiChpzeXN0ZW1fcmVzb3VyY2VzX25hbWVzcGFjZRgDIAEoCRIqCiJoYXNfYW5hbHlzaXNfcnVuX2xvZ3NfdXJsX3RlbXBsYXRlGAQgASgIGmIKEUFyZ29jZFNoYXJkc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFyZ29DRFNoYXJkOgI4ASIYChZHZXRQdWJsaWNDb25maWdSZXF1ZXN0Io4BChdHZXRQdWJsaWNDb25maWdSZXNwb25zZRJBCgtvaWRjX2NvbmZpZxgBIAEoCzIsLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLk9JRENDb25maWcSHQoVYWRtaW5fYWNjb3VudF9lbmFibGVkGAIgASgIEhEKCXNraXBfYXV0aBgDIAEoCCJaCgpPSURDQ29uZmlnEhIKCmlzc3Vlcl91cmwYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1jbGlfY2xpZW50X2lkGAQgASgJIiUKEUFkbWluTG9naW5SZXF1ZXN0EhAKCHBhc3N3b3JkGAEgASgJIiYKEkFkbWluTG9naW5SZXNwb25zZRIQCghpZF90b2tlbhgBIAEoCSIpChVDcmVhdGVSZXNvdXJjZVJlcXVlc3QSEAoIbWFuaWZlc3QYASABKAwiVgoUQ3JlYXRlUmVzb3VyY2VSZXN1bHQSIwoZY3JlYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgBIAEoDEgAEg8KBWVycm9yGAIgASgJSABCCAoGcmVzdWx0ImEKFkNyZWF0ZVJlc291cmNlUmVzcG9uc2USRwoHcmVzdWx0cxgBIAMoCzI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzdWx0IjEKHUNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIoMBChxDcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0EiMKGWNyZWF0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAIgASgMSAASDwoFZXJyb3IYAyABKAlIAEIICgZyZXN1bHQicQoeQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEk8KB3Jlc3VsdHMYASADKAsyPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0IikKFVVwZGF0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCJWChRVcGRhdGVSZXNvdXJjZVJlc3VsdBIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASDwoFZXJyb3IYAiABKAlIAEIICgZyZXN1bHQiYQoWVXBkYXRlUmVzb3VyY2VSZXNwb25zZRJHCgdyZXN1bHRzGAEgAygLMjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXN1bHQiKQoVRGVsZXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIlYKFERlbGV0ZVJlc291cmNlUmVzdWx0EiMKGWRlbGV0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIPCgVlcnJvchgCIAEoCUgAQggKBnJlc3VsdCJhChZEZWxldGVSZXNvdXJjZVJlc3BvbnNlEkcKB3Jlc3VsdHMYASADKAsyNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3VsdCJOChFMaXN0U3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEhcKD2ZyZWlnaHRfb3JpZ2lucxgCIAMoCRIPCgdzdW1tYXJ5GAMgASgIImsKEkxpc3RTdGFnZXNSZXNwb25zZRI7CgZzdGFnZXMYASADKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2USGAoQcmVzb3VyY2VfdmVyc2lvbhgCIAEoCSIkChFMaXN0SW1hZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIr8BChJMaXN0SW1hZ2VzUmVzcG9uc2USUAoGaW1hZ2VzGAIgAygLMkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1Jlc3BvbnNlLkltYWdlc0VudHJ5GlcKC0ltYWdlc0VudHJ5EgsKA2tleRgBIAEoCRI3CgV2YWx1ZRgCIAEoCzIoLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlRhZ01hcDoCOAEiqAEKBlRhZ01hcBJACgR0YWdzGAEgAygLMjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVGFnTWFwLlRhZ3NFbnRyeRpcCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEj4KBXZhbHVlGAIgASgLMi8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuSW1hZ2VTdGFnZU1hcDoCOAEiiwEKDUltYWdlU3RhZ2VNYXASSwoGc3RhZ2VzGAEgAygLMjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuSW1hZ2VTdGFnZU1hcC5TdGFnZXNFbnRyeRotCgtTdGFnZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBIm0KD0dldFN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImkKEEdldFN0YWdlUmVzcG9uc2USPAoFc3RhZ2UYASABKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2VIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiRAocR2V0U3RhZ2VIZWFsdGhPdXRwdXRzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEhMKC3N0YWdlX25hbWVzGAIgAygJIsEBCh1HZXRTdGFnZUhlYWx0aE91dHB1dHNSZXNwb25zZRJqCg5oZWFsdGhfb3V0cHV0cxgBIAMoCzJSLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFN0YWdlSGVhbHRoT3V0cHV0c1Jlc3BvbnNlLkhlYWx0aE91dHB1dHNFbnRyeRo0ChJIZWFsdGhPdXRwdXRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgMOgI4ASJ3ChJXYXRjaFN0YWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhcKD2ZyZWlnaHRfb3JpZ2lucxgDIAMoCRIPCgdzdW1tYXJ5GAQgASgIEhgKEHJlc291cmNlX3ZlcnNpb24YBSABKAkiXwoTV2F0Y2hTdGFnZXNSZXNwb25zZRI6CgVzdGFnZRgBIAEoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZRIMCgR0eXBlGAIgASgJIjMKEkRlbGV0ZVN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiFQoTRGVsZXRlU3RhZ2VSZXNwb25zZSJWChdHZXRDbHVzdGVyQ29uZmlnUmVxdWVzdBI7CgZmb3JtYXQYASABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiggEKGEdldENsdXN0ZXJDb25maWdSZXNwb25zZRJNCg5jbHVzdGVyX2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyQ29uZmlnSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IhwKGkRlbGV0ZUNsdXN0ZXJDb25maWdSZXF1ZXN0Ih0KG0RlbGV0ZUNsdXN0ZXJDb25maWdSZXNwb25zZSIbChlXYXRjaENsdXN0ZXJDb25maWdSZXF1ZXN0IncKGldhdGNoQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlEksKDmNsdXN0ZXJfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJDb25maWcSDAoEdHlwZRgCIAEoCSJGChVMaXN0UHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJdChZMaXN0UHJvbW90aW9uc1Jlc3BvbnNlEkMKCnByb21vdGlvbnMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uIkcKFldhdGNoUHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJrChdXYXRjaFByb21vdGlvbnNSZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uEgwKBHR5cGUYAiABKAkicQoTR2V0UHJvbW90aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0InUKFEdldFByb21vdGlvblJlc3BvbnNlEkQKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25IABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNgoVV2F0Y2hQcm9tb3Rpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJqChZXYXRjaFByb21vdGlvblJlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24SDAoEdHlwZRgCIAEoCSI2ChVBYm9ydFByb21vdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhgKFkFib3J0UHJvbW90aW9uUmVzcG9uc2UiJAoURGVsZXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCSIXChVEZWxldGVQcm9qZWN0UmVzcG9uc2UiXgoRR2V0UHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRI7CgZmb3JtYXQYAiABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQibwoSR2V0UHJvamVjdFJlc3BvbnNlEkAKB3Byb2plY3QYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCKgAQoTTGlzdFByb2plY3RzUmVxdWVzdBIWCglwYWdlX3NpemUYASABKAVIAIgBARIRCgRwYWdlGAIgASgFSAGIAQESEwoGZmlsdGVyGAMgASgJSAKIAQESCwoDdWlkGAQgAygJEhEKBG1pbmUYBSABKAhIA4gBAUIMCgpfcGFnZV9zaXplQgcKBV9wYWdlQgkKB19maWx0ZXJCBwoFX21pbmUiZgoUTGlzdFByb2plY3RzUmVzcG9uc2USPwoIcHJvamVjdHMYASADKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdBINCgV0b3RhbBgCIAEoBSJnChdHZXRQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEjsKBmZvcm1hdBgCIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKCAQoYR2V0UHJvamVjdENvbmZpZ1Jlc3BvbnNlEk0KDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWdIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiLQoaRGVsZXRlUHJvamVjdENvbmZpZ1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSIdChtEZWxldGVQcm9qZWN0Q29uZmlnUmVzcG9uc2UiLAoZV2F0Y2hQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIncKGldhdGNoUHJvamVjdENvbmZpZ1Jlc3BvbnNlEksKDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWcSDAoEdHlwZRgCIAEoCSJUChVBcHByb3ZlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJEg0KBXN0YWdlGAQgASgJIhgKFkFwcHJvdmVGcmVpZ2h0UmVzcG9uc2UiRAoURGVsZXRlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJIhcKFURlbGV0ZUZyZWlnaHRSZXNwb25zZSJ+ChFHZXRGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWxpYXMYAyABKAkSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0Im8KEkdldEZyZWlnaHRSZXNwb25zZRJACgdmcmVpZ2h0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNwoTV2F0Y2hGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg8KB29yaWdpbnMYAiADKAkiZAoUV2F0Y2hGcmVpZ2h0UmVzcG9uc2USPgoHZnJlaWdodBgBIAEoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0EgwKBHR5cGUYAiABKAkiXwoVUHJvbW90ZVRvU3RhZ2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkSDwoHZnJlaWdodBgDIAEoCRIVCg1mcmVpZ2h0X2FsaWFzGAQgASgJIlwKFlByb21vdGVUb1N0YWdlUmVzcG9uc2USQgoJcHJvbW90aW9uGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbiJiChhQcm9tb3RlRG93bnN0cmVhbVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCRIPCgdmcmVpZ2h0GAMgASgJEhUKDWZyZWlnaHRfYWxpYXMYBCABKAkiYAoZUHJvbW90ZURvd25zdHJlYW1SZXNwb25zZRJDCgpwcm9tb3Rpb25zGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbiKKAQoTUXVlcnlGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJEhAKCGdyb3VwX2J5GAMgASgJEg0KBWdyb3VwGAQgASgJEhAKCG9yZGVyX2J5GAUgASgJEg8KB3JldmVyc2UYBiABKAgSDwoHb3JpZ2lucxgHIAMoCSLIAQoUUXVlcnlGcmVpZ2h0UmVzcG9uc2USUgoGZ3JvdXBzGAEgAygLMkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUXVlcnlGcmVpZ2h0UmVzcG9uc2UuR3JvdXBzRW50cnkaXAoLR3JvdXBzRW50cnkSCwoDa2V5GAEgASgJEjwKBXZhbHVlGAIgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRnJlaWdodExpc3Q6AjgBIk0KC0ZyZWlnaHRMaXN0Ej4KB2ZyZWlnaHQYASADKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodCJgChlVcGRhdGVGcmVpZ2h0QWxpYXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRIRCglvbGRfYWxpYXMYAyABKAkSEQoJbmV3X2FsaWFzGAQgASgJIhwKGlVwZGF0ZUZyZWlnaHRBbGlhc1Jlc3BvbnNlIjEKD1JldmVyaWZ5UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJIhIKEFJldmVyaWZ5UmVzcG9uc2UiOgoYQWJvcnRWZXJpZmljYXRpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkiGwoZQWJvcnRWZXJpZmljYXRpb25SZXNwb25zZSIoChVMaXN0V2FyZWhvdXNlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJdChZMaXN0V2FyZWhvdXNlc1Jlc3BvbnNlEkMKCndhcmVob3VzZXMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlInEKE0dldFdhcmVob3VzZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJ1ChRHZXRXYXJlaG91c2VSZXNwb25zZRJECgl3YXJlaG91c2UYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjcKFldhdGNoV2FyZWhvdXNlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJImsKF1dhdGNoV2FyZWhvdXNlc1Jlc3BvbnNlEkIKCXdhcmVob3VzZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5XYXJlaG91c2USDAoEdHlwZRgCIAEoCSI3ChZEZWxldGVXYXJlaG91c2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIZChdEZWxldGVXYXJlaG91c2VSZXNwb25zZSL0AQoWQ3JlYXRlQ29uZmlnTWFwUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJElAKBGRhdGEYBSADKAsyQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVDb25maWdNYXBSZXF1ZXN0LkRhdGFFbnRyeRIRCglyZXBsaWNhdGUYBiABKAgaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiTAoXQ3JlYXRlQ29uZmlnTWFwUmVzcG9uc2USMQoKY29uZmlnX21hcBgBIAEoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXAiTQoWRGVsZXRlQ29uZmlnTWFwUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJIhkKF0RlbGV0ZUNvbmZpZ01hcFJlc3BvbnNlIj4KFUxpc3RDb25maWdNYXBzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAiABKAgSDwoHcHJvamVjdBgBIAEoCSJMChZMaXN0Q29uZmlnTWFwc1Jlc3BvbnNlEjIKC2NvbmZpZ19tYXBzGAEgAygLMh0uazhzLmlvLmFwaS5jb3JlLnYxLkNvbmZpZ01hcCKHAQoTR2V0Q29uZmlnTWFwUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYBCABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJkChRHZXRDb25maWdNYXBSZXNwb25zZRIzCgpjb25maWdfbWFwGAEgASgLMh0uazhzLmlvLmFwaS5jb3JlLnYxLkNvbmZpZ01hcEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCL0AQoWVXBkYXRlQ29uZmlnTWFwUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJElAKBGRhdGEYBSADKAsyQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVDb25maWdNYXBSZXF1ZXN0LkRhdGFFbnRyeRIRCglyZXBsaWNhdGUYBiABKAgaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiTAoXVXBkYXRlQ29uZmlnTWFwUmVzcG9uc2USMQoKY29uZmlnX21hcBgBIAEoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXAiygEKHENyZWF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAggASgJEgwKBHR5cGUYAyABKAkSGQoIcmVwb191cmwYBCABKAlSB3JlcG9VUkwSKQoRcmVwb191cmxfaXNfcmVnZXgYBSABKAhSDnJlcG9VUkxJc1JlZ2V4EhAKCHVzZXJuYW1lGAYgASgJEhAKCHBhc3N3b3JkGAcgASgJIlAKHUNyZWF0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCI9ChxEZWxldGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIfCh1EZWxldGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZSJ3ChlHZXRSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiaAoaR2V0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USMQoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0Ii0KGkxpc3RSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiTgobTGlzdFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgAygLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCLKAQocVXBkYXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YCCABKAkSDAoEdHlwZRgDIAEoCRIZCghyZXBvX3VybBgEIAEoCVIHcmVwb1VSTBIpChFyZXBvX3VybF9pc19yZWdleBgFIAEoCFIOcmVwb1VSTElzUmVnZXgSEAoIdXNlcm5hbWUYBiABKAkSEAoIcGFzc3dvcmQYByABKAkiUAodVXBkYXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IkYKHUxpc3RHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgCIAEoCBIPCgdwcm9qZWN0GAEgASgJIlEKHkxpc3RHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQihgIKH0NyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAYgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRJZCgRkYXRhGAQgAygLMksuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAUgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlMKIENyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCKGAgofVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYBiABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJElkKBGRhdGEYBCADKAsySy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0LkRhdGFFbnRyeRIRCglyZXBsaWNhdGUYBSABKAgaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiUwogVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IlYKH0RlbGV0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAMgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIiCiBEZWxldGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZSIvChxMaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiggEKHUxpc3RBbmFseXNpc1RlbXBsYXRlc1Jlc3BvbnNlEmEKEmFuYWx5c2lzX3RlbXBsYXRlcxgBIAMoCzJFLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5BbmFseXNpc1RlbXBsYXRlIngKGkdldEFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQimgEKG0dldEFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRJiChFhbmFseXNpc190ZW1wbGF0ZRgBIAEoCzJFLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5BbmFseXNpc1RlbXBsYXRlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0Ij4KHURlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIgCh5EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2UiJQojTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QiswEKJExpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRKKAQoaY2x1c3Rlcl9hbmFseXNpc190ZW1wbGF0ZXMYASADKAsyTC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSGGNsdXN0ZXJhbmFseXNpc1RlbXBsYXRlcyJuCiFHZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQisAEKIkdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2UScQoZY2x1c3Rlcl9hbmFseXNpc190ZW1wbGF0ZRgBIAEoCzJMLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5DbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI0CiREZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDAoEbmFtZRgCIAEoCSInCiVEZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlInUKFUdldEFuYWx5c2lzUnVuUmVxdWVzdBIRCgluYW1lc3BhY2UYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiiwEKFkdldEFuYWx5c2lzUnVuUmVzcG9uc2USWAoMYW5hbHlzaXNfcnVuGAEgASgLMkAuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkFuYWx5c2lzUnVuSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0ImkKGUdldEFuYWx5c2lzUnVuTG9nc1JlcXVlc3QSEQoJbmFtZXNwYWNlGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLbWV0cmljX25hbWUYAyABKAkSFgoOY29udGFpbmVyX25hbWUYBCABKAkiKwoaR2V0QW5hbHlzaXNSdW5Mb2dzUmVzcG9uc2USDQoFY2h1bmsYASABKAkiKwoYTGlzdFByb2plY3RFdmVudHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiRgoZTGlzdFByb2plY3RFdmVudHNSZXNwb25zZRIpCgZldmVudHMYASADKAsyGS5rOHMuaW8uYXBpLmNvcmUudjEuRXZlbnQiLAoZTGlzdFByb21vdGlvblRhc2tzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJImoKGkxpc3RQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEkwKD3Byb21vdGlvbl90YXNrcxgBIAMoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25UYXNrInUKF0dldFByb21vdGlvblRhc2tSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiggEKGEdldFByb21vdGlvblRhc2tSZXNwb25zZRJNCg5wcm9tb3Rpb25fdGFzaxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25UYXNrSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IiIKIExpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXF1ZXN0IoABCiFMaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVzcG9uc2USWwoXY2x1c3Rlcl9wcm9tb3Rpb25fdGFza3MYASADKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2x1c3RlclByb21vdGlvblRhc2siawoeR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXF1ZXN0EgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IqYBCh9HZXRDbHVzdGVyUHJvbW90aW9uVGFza1Jlc3BvbnNlEmoKDnByb21vdGlvbl90YXNrGAEgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJQcm9tb3Rpb25UYXNrSABSFGNsdXN0ZXJQcm9tb3Rpb25UYXNrEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJSChFDcmVhdGVSb2xlUmVxdWVzdBI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJTChJDcmVhdGVSb2xlUmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiMgoRRGVsZXRlUm9sZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhQKEkRlbGV0ZVJvbGVSZXNwb25zZSKYAQoOR2V0Um9sZVJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAUgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRIUCgxhc19yZXNvdXJjZXMYAyABKAgSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IroBCg9HZXRSb2xlUmVzcG9uc2USPwoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGVIABJNCglyZXNvdXJjZXMYAiABKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlUmVzb3VyY2VzSAASDQoDcmF3GAMgASgMSABCCAoGcmVzdWx0IkoKBkNsYWltcxJACgZjbGFpbXMYASADKAsyMC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5DbGFpbSLRAQoMR3JhbnRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEcm9sZRgCIAEoCRI/Cgt1c2VyX2NsYWltcxgDIAEoCzIoLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNsYWltc0gAElYKEHJlc291cmNlX2RldGFpbHMYBCABKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5SZXNvdXJjZURldGFpbHNIAEIJCgdyZXF1ZXN0Ik4KDUdyYW50UmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiTwoQTGlzdFJvbGVzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAyABKAgSDwoHcHJvamVjdBgBIAEoCRIUCgxhc19yZXNvdXJjZXMYAiABKAgioAEKEUxpc3RSb2xlc1Jlc3BvbnNlEj4KBXJvbGVzGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZRJLCglyZXNvdXJjZXMYAiADKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlUmVzb3VyY2VzItIBCg1SZXZva2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEcm9sZRgCIAEoCRI/Cgt1c2VyX2NsYWltcxgDIAEoCzIoLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNsYWltc0gAElYKEHJlc291cmNlX2RldGFpbHMYBCABKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5SZXNvdXJjZURldGFpbHNIAEIJCgdyZXF1ZXN0Ik8KDlJldm9rZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIlIKEVVwZGF0ZVJvbGVSZXF1ZXN0Ej0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIlMKElVwZGF0ZVJvbGVSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJfChVDcmVhdGVBUElUb2tlblJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSEQoJcm9sZV9uYW1lGAMgASgJEgwKBG5hbWUYBCABKAkiSgoWQ3JlYXRlQVBJVG9rZW5SZXNwb25zZRIwCgx0b2tlbl9zZWNyZXQYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IkwKFURlbGV0ZUFQSVRva2VuUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJIhgKFkRlbGV0ZUFQSVRva2VuUmVzcG9uc2UihgEKEkdldEFQSVRva2VuUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJEjsKBmZvcm1hdBgEIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJiChNHZXRBUElUb2tlblJlc3BvbnNlEjIKDHRva2VuX3NlY3JldBgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiUAoUTGlzdEFQSVRva2Vuc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSEQoJcm9sZV9uYW1lGAMgASgJIkoKFUxpc3RBUElUb2tlbnNSZXNwb25zZRIxCg10b2tlbl9zZWNyZXRzGAEgAygLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJOChZSZWZyZXNoUmVzb3VyY2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRIVCg1yZXNvdXJjZV90eXBlGAMgASgJIkEKF1JlZnJlc2hSZXNvdXJjZVJlc3BvbnNlEiYKCHJlc291cmNlGAEgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueSpRCglSYXdGb3JtYXQSGgoWUkFXX0ZPUk1BVF9VTlNQRUNJRklFRBAAEhMKD1JBV19GT1JNQVRfSlNPThABEhMKD1JBV19GT1JNQVRfWUFNTBACMsVXCgxLYXJnb1NlcnZpY2USgwEKDkdldFZlcnNpb25JbmZvEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0VmVyc2lvbkluZm9SZXNwb25zZRJ0CglHZXRDb25maWcSMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdSZXF1ZXN0GjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UShgEKD0dldFB1YmxpY0NvbmZpZxI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFB1YmxpY0NvbmZpZ1JlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQdWJsaWNDb25maWdSZXNwb25zZRJ3CgpBZG1pbkxvZ2luEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWRtaW5Mb2dpblJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BZG1pbkxvZ2luUmVzcG9uc2USgwEKDkNyZWF0ZVJlc291cmNlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVzb3VyY2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVzb3VyY2VSZXNwb25zZRKbAQoWQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZRI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEoMBCg5VcGRhdGVSZXNvdXJjZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlc291cmNlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlc291cmNlUmVzcG9uc2USgwEKDkRlbGV0ZVJlc291cmNlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVzb3VyY2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVzb3VyY2VSZXNwb25zZRKGAQoPUmVmcmVzaFJlc291cmNlEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmVmcmVzaFJlc291cmNlUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJlZnJlc2hSZXNvdXJjZVJlc3BvbnNlEncKCkxpc3RTdGFnZXMSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VzUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RTdGFnZXNSZXNwb25zZRJ3CgpMaXN0SW1hZ2VzEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1JlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0SW1hZ2VzUmVzcG9uc2UScQoIR2V0U3RhZ2USMS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlcXVlc3QaMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlc3BvbnNlEpgBChVHZXRTdGFnZUhlYWx0aE91dHB1dHMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZUhlYWx0aE91dHB1dHNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VIZWFsdGhPdXRwdXRzUmVzcG9uc2USfAoLV2F0Y2hTdGFnZXMSNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFN0YWdlc1JlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFN0YWdlc1Jlc3BvbnNlMAESegoLRGVsZXRlU3RhZ2USNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVTdGFnZVJlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVTdGFnZVJlc3BvbnNlEokBChBHZXRDbHVzdGVyQ29uZmlnEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckNvbmZpZ1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQ29uZmlnUmVzcG9uc2USkgEKE0RlbGV0ZUNsdXN0ZXJDb25maWcSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQ29uZmlnUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJDb25maWdSZXNwb25zZRKRAQoSV2F0Y2hDbHVzdGVyQ29uZmlnEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hDbHVzdGVyQ29uZmlnUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlMAESgwEKDkxpc3RQcm9tb3Rpb25zEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvbnNSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvbnNSZXNwb25zZRKIAQoPV2F0Y2hQcm9tb3Rpb25zEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25zUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uc1Jlc3BvbnNlMAESfQoMR2V0UHJvbW90aW9uEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblJlc3BvbnNlEoUBCg5XYXRjaFByb21vdGlvbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uUmVzcG9uc2UwARKDAQoOQWJvcnRQcm9tb3Rpb24SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFByb21vdGlvblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFByb21vdGlvblJlc3BvbnNlEoABCg1EZWxldGVQcm9qZWN0EjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdFJlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0UmVzcG9uc2USdwoKR2V0UHJvamVjdBIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdFJlc3BvbnNlEn0KDExpc3RQcm9qZWN0cxI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0c1JlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvamVjdHNSZXNwb25zZRKJAQoQR2V0UHJvamVjdENvbmZpZxI5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RDb25maWdSZXF1ZXN0GjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdENvbmZpZ1Jlc3BvbnNlEpIBChNEZWxldGVQcm9qZWN0Q29uZmlnEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdENvbmZpZ1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0Q29uZmlnUmVzcG9uc2USkQEKEldhdGNoUHJvamVjdENvbmZpZxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvamVjdENvbmZpZ1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb2plY3RDb25maWdSZXNwb25zZTABEoMBCg5BcHByb3ZlRnJlaWdodBI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFwcHJvdmVGcmVpZ2h0UmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFwcHJvdmVGcmVpZ2h0UmVzcG9uc2USgAEKDURlbGV0ZUZyZWlnaHQSNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVGcmVpZ2h0UmVxdWVzdBo3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUZyZWlnaHRSZXNwb25zZRJ3CgpHZXRGcmVpZ2h0EjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0RnJlaWdodFJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRGcmVpZ2h0UmVzcG9uc2USfwoMV2F0Y2hGcmVpZ2h0EjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hGcmVpZ2h0UmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoRnJlaWdodFJlc3BvbnNlMAESgwEKDlByb21vdGVUb1N0YWdlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZVRvU3RhZ2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZVRvU3RhZ2VSZXNwb25zZRKMAQoRUHJvbW90ZURvd25zdHJlYW0SOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlRG93bnN0cmVhbVJlcXVlc3QaOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlRG93bnN0cmVhbVJlc3BvbnNlEn0KDFF1ZXJ5RnJlaWdodBI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5RdWVyeUZyZWlnaHRSZXNwb25zZRKPAQoSVXBkYXRlRnJlaWdodEFsaWFzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlRnJlaWdodEFsaWFzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUZyZWlnaHRBbGlhc1Jlc3BvbnNlEnEKCFJldmVyaWZ5EjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2ZXJpZnlSZXF1ZXN0GjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2ZXJpZnlSZXNwb25zZRKMAQoRQWJvcnRWZXJpZmljYXRpb24SOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFZlcmlmaWNhdGlvblJlcXVlc3QaOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFZlcmlmaWNhdGlvblJlc3BvbnNlEoMBCg5MaXN0V2FyZWhvdXNlcxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RXYXJlaG91c2VzUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RXYXJlaG91c2VzUmVzcG9uc2USfQoMR2V0V2FyZWhvdXNlEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0V2FyZWhvdXNlUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFdhcmVob3VzZVJlc3BvbnNlEogBCg9XYXRjaFdhcmVob3VzZXMSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFdhcmVob3VzZXNSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hXYXJlaG91c2VzUmVzcG9uc2UwARKGAQoPRGVsZXRlV2FyZWhvdXNlEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlV2FyZWhvdXNlUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVdhcmVob3VzZVJlc3BvbnNlEpgBChVDcmVhdGVSZXBvQ3JlZGVudGlhbHMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USmAEKFURlbGV0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKPAQoSR2V0UmVwb0NyZWRlbnRpYWxzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEpIBChNMaXN0UmVwb0NyZWRlbnRpYWxzEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USmAEKFVVwZGF0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKbAQoWTGlzdEdlbmVyaWNDcmVkZW50aWFscxI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEqEBChhDcmVhdGVHZW5lcmljQ3JlZGVudGlhbHMSQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USoQEKGFVwZGF0ZUdlbmVyaWNDcmVkZW50aWFscxJBLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRKhAQoYRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzEkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBpCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEoYBCg9DcmVhdGVDb25maWdNYXASOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVDb25maWdNYXBSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQ29uZmlnTWFwUmVzcG9uc2UShgEKD0RlbGV0ZUNvbmZpZ01hcBI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNvbmZpZ01hcFJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDb25maWdNYXBSZXNwb25zZRKDAQoOTGlzdENvbmZpZ01hcHMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q29uZmlnTWFwc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q29uZmlnTWFwc1Jlc3BvbnNlEn0KDEdldENvbmZpZ01hcBI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ01hcFJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdNYXBSZXNwb25zZRKGAQoPVXBkYXRlQ29uZmlnTWFwEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUNvbmZpZ01hcFJlc3BvbnNlEpgBChVMaXN0QW5hbHlzaXNUZW1wbGF0ZXMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USkgEKE0dldEFuYWx5c2lzVGVtcGxhdGUSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKbAQoWRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZRI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEq0BChxMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzEkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QaRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USpwEKGkdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlEkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKwAQodRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGUSRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaRy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEoMBCg5HZXRBbmFseXNpc1J1bhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVzcG9uc2USkQEKEkdldEFuYWx5c2lzUnVuTG9ncxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuTG9nc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1J1bkxvZ3NSZXNwb25zZTABEowBChFMaXN0UHJvamVjdEV2ZW50cxI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVzcG9uc2USjwEKEkxpc3RQcm9tb3Rpb25UYXNrcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25UYXNrc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uVGFza3NSZXNwb25zZRKkAQoZTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrcxJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXF1ZXN0GkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEokBChBHZXRQcm9tb3Rpb25UYXNrEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uVGFza1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25UYXNrUmVzcG9uc2USngEKF0dldENsdXN0ZXJQcm9tb3Rpb25UYXNrEkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXF1ZXN0GkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXNwb25zZRJ3CgpDcmVhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSb2xlUmVzcG9uc2USdwoKRGVsZXRlUm9sZRIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJvbGVSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUm9sZVJlc3BvbnNlEm4KB0dldFJvbGUSMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSb2xlUmVxdWVzdBoxLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJvbGVSZXNwb25zZRJoCgVHcmFudBIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVxdWVzdBovLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVzcG9uc2USdAoJTGlzdFJvbGVzEjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJvbGVzUmVxdWVzdBozLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSb2xlc1Jlc3BvbnNlEmsKBlJldm9rZRIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldm9rZVJlcXVlc3QaMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZva2VSZXNwb25zZRJ3CgpVcGRhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSb2xlUmVzcG9uc2USgwEKDkNyZWF0ZUFQSVRva2VuEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQVBJVG9rZW5SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQVBJVG9rZW5SZXNwb25zZRKDAQoORGVsZXRlQVBJVG9rZW4SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBUElUb2tlblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBUElUb2tlblJlc3BvbnNlEnoKC0dldEFQSVRva2VuEjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QVBJVG9rZW5SZXF1ZXN0GjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QVBJVG9rZW5SZXNwb25zZRKAAQoNTGlzdEFQSVRva2VucxI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RBUElUb2tlbnNSZXF1ZXN0GjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFQSVRva2Vuc1Jlc3BvbnNlQpMCCiRjb20uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTFCDFNlcnZpY2VQcm90b1ABWjhnaXRodWIuY29tL2FrdWl0eS9rYXJnby9hcGkvc2VydmljZS92MWFscGhhMTtzdmN2MWFscGhhMaICBEFJS1OqAiBBa3VpdHkuSW8uS2FyZ28uU2VydmljZS5WMWFscGhhMcoCIEFrdWl0eVxJb1xLYXJnb1xTZXJ2aWNlXFYxYWxwaGEx4gIsQWt1aXR5XElvXEthcmdvXFNlcnZpY2VcVjFhbHBoYTFcR1BCTWV0YWRhdGHqAiRBa3VpdHk6OklvOjpLYXJnbzo6U2VydmljZTo6VjFhbHBoYTFiBnByb3RvMw", [file_google_protobuf_timestamp, file_api_v1alpha1_generated, file_k8s_io_api_core_v1_generated, file_k8s_io_apimachinery_pkg_apis_meta_v1_generated, file_api_stubs_rollouts_v1alpha1_generated, file_api_rbac_v1alpha1_generated, file_google_protobuf_any]); + fileDesc("CiJhcGkvc2VydmljZS92MWFscGhhMS9zZXJ2aWNlLnByb3RvEiBha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMSKrAQoRQ29tcG9uZW50VmVyc2lvbnMSQgoGc2VydmVyGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm9IAIgBARI/CgNjbGkYAiABKAsyLS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5WZXJzaW9uSW5mb0gBiAEBQgkKB19zZXJ2ZXJCBgoEX2NsaSKyAQoLVmVyc2lvbkluZm8SDwoHdmVyc2lvbhgBIAEoCRISCgpnaXRfY29tbWl0GAIgASgJEhYKDmdpdF90cmVlX2RpcnR5GAMgASgIEi4KCmJ1aWxkX3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdvX3ZlcnNpb24YBSABKAkSEAoIY29tcGlsZXIYBiABKAkSEAoIcGxhdGZvcm0YByABKAkiFwoVR2V0VmVyc2lvbkluZm9SZXF1ZXN0Il0KFkdldFZlcnNpb25JbmZvUmVzcG9uc2USQwoMdmVyc2lvbl9pbmZvGAEgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVmVyc2lvbkluZm8iEgoQR2V0Q29uZmlnUmVxdWVzdCItCgtBcmdvQ0RTaGFyZBILCgN1cmwYASABKAkSEQoJbmFtZXNwYWNlGAIgASgJIsgCChFHZXRDb25maWdSZXNwb25zZRJcCg1hcmdvY2Rfc2hhcmRzGAEgAygLMkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UuQXJnb2NkU2hhcmRzRW50cnkSIQoZc2VjcmV0X21hbmFnZW1lbnRfZW5hYmxlZBgCIAEoCBIiChpzeXN0ZW1fcmVzb3VyY2VzX25hbWVzcGFjZRgDIAEoCRIqCiJoYXNfYW5hbHlzaXNfcnVuX2xvZ3NfdXJsX3RlbXBsYXRlGAQgASgIGmIKEUFyZ29jZFNoYXJkc0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFyZ29DRFNoYXJkOgI4ASIYChZHZXRQdWJsaWNDb25maWdSZXF1ZXN0Io4BChdHZXRQdWJsaWNDb25maWdSZXNwb25zZRJBCgtvaWRjX2NvbmZpZxgBIAEoCzIsLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLk9JRENDb25maWcSHQoVYWRtaW5fYWNjb3VudF9lbmFibGVkGAIgASgIEhEKCXNraXBfYXV0aBgDIAEoCCJaCgpPSURDQ29uZmlnEhIKCmlzc3Vlcl91cmwYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIVCg1jbGlfY2xpZW50X2lkGAQgASgJIiUKEUFkbWluTG9naW5SZXF1ZXN0EhAKCHBhc3N3b3JkGAEgASgJIiYKEkFkbWluTG9naW5SZXNwb25zZRIQCghpZF90b2tlbhgBIAEoCSIpChVDcmVhdGVSZXNvdXJjZVJlcXVlc3QSEAoIbWFuaWZlc3QYASABKAwiVgoUQ3JlYXRlUmVzb3VyY2VSZXN1bHQSIwoZY3JlYXRlZF9yZXNvdXJjZV9tYW5pZmVzdBgBIAEoDEgAEg8KBWVycm9yGAIgASgJSABCCAoGcmVzdWx0ImEKFkNyZWF0ZVJlc291cmNlUmVzcG9uc2USRwoHcmVzdWx0cxgBIAMoCzI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZVJlc291cmNlUmVzdWx0IjEKHUNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIoMBChxDcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0EiMKGWNyZWF0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAIgASgMSAASDwoFZXJyb3IYAyABKAlIAEIICgZyZXN1bHQicQoeQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEk8KB3Jlc3VsdHMYASADKAsyPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVPclVwZGF0ZVJlc291cmNlUmVzdWx0IikKFVVwZGF0ZVJlc291cmNlUmVxdWVzdBIQCghtYW5pZmVzdBgBIAEoDCJWChRVcGRhdGVSZXNvdXJjZVJlc3VsdBIjChl1cGRhdGVkX3Jlc291cmNlX21hbmlmZXN0GAEgASgMSAASDwoFZXJyb3IYAiABKAlIAEIICgZyZXN1bHQiYQoWVXBkYXRlUmVzb3VyY2VSZXNwb25zZRJHCgdyZXN1bHRzGAEgAygLMjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUmVzb3VyY2VSZXN1bHQiKQoVRGVsZXRlUmVzb3VyY2VSZXF1ZXN0EhAKCG1hbmlmZXN0GAEgASgMIlYKFERlbGV0ZVJlc291cmNlUmVzdWx0EiMKGWRlbGV0ZWRfcmVzb3VyY2VfbWFuaWZlc3QYASABKAxIABIPCgVlcnJvchgCIAEoCUgAQggKBnJlc3VsdCJhChZEZWxldGVSZXNvdXJjZVJlc3BvbnNlEkcKB3Jlc3VsdHMYASADKAsyNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXNvdXJjZVJlc3VsdCJOChFMaXN0U3RhZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEhcKD2ZyZWlnaHRfb3JpZ2lucxgCIAMoCRIPCgdzdW1tYXJ5GAMgASgIImsKEkxpc3RTdGFnZXNSZXNwb25zZRI7CgZzdGFnZXMYASADKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2USGAoQcmVzb3VyY2VfdmVyc2lvbhgCIAEoCSIkChFMaXN0SW1hZ2VzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIr8BChJMaXN0SW1hZ2VzUmVzcG9uc2USUAoGaW1hZ2VzGAIgAygLMkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1Jlc3BvbnNlLkltYWdlc0VudHJ5GlcKC0ltYWdlc0VudHJ5EgsKA2tleRgBIAEoCRI3CgV2YWx1ZRgCIAEoCzIoLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlRhZ01hcDoCOAEiqAEKBlRhZ01hcBJACgR0YWdzGAEgAygLMjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVGFnTWFwLlRhZ3NFbnRyeRpcCglUYWdzRW50cnkSCwoDa2V5GAEgASgJEj4KBXZhbHVlGAIgASgLMi8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuSW1hZ2VTdGFnZU1hcDoCOAEiiwEKDUltYWdlU3RhZ2VNYXASSwoGc3RhZ2VzGAEgAygLMjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuSW1hZ2VTdGFnZU1hcC5TdGFnZXNFbnRyeRotCgtTdGFnZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBIm0KD0dldFN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0ImkKEEdldFN0YWdlUmVzcG9uc2USPAoFc3RhZ2UYASABKAsyKy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuU3RhZ2VIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiRAocR2V0U3RhZ2VIZWFsdGhPdXRwdXRzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEhMKC3N0YWdlX25hbWVzGAIgAygJIsEBCh1HZXRTdGFnZUhlYWx0aE91dHB1dHNSZXNwb25zZRJqCg5oZWFsdGhfb3V0cHV0cxgBIAMoCzJSLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFN0YWdlSGVhbHRoT3V0cHV0c1Jlc3BvbnNlLkhlYWx0aE91dHB1dHNFbnRyeRo0ChJIZWFsdGhPdXRwdXRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgMOgI4ASJ3ChJXYXRjaFN0YWdlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhcKD2ZyZWlnaHRfb3JpZ2lucxgDIAMoCRIPCgdzdW1tYXJ5GAQgASgIEhgKEHJlc291cmNlX3ZlcnNpb24YBSABKAkiXwoTV2F0Y2hTdGFnZXNSZXNwb25zZRI6CgVzdGFnZRgBIAEoCzIrLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5TdGFnZRIMCgR0eXBlGAIgASgJIjMKEkRlbGV0ZVN0YWdlUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkiFQoTRGVsZXRlU3RhZ2VSZXNwb25zZSJWChdHZXRDbHVzdGVyQ29uZmlnUmVxdWVzdBI7CgZmb3JtYXQYASABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiggEKGEdldENsdXN0ZXJDb25maWdSZXNwb25zZRJNCg5jbHVzdGVyX2NvbmZpZxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5DbHVzdGVyQ29uZmlnSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IhwKGkRlbGV0ZUNsdXN0ZXJDb25maWdSZXF1ZXN0Ih0KG0RlbGV0ZUNsdXN0ZXJDb25maWdSZXNwb25zZSIbChlXYXRjaENsdXN0ZXJDb25maWdSZXF1ZXN0IncKGldhdGNoQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlEksKDmNsdXN0ZXJfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJDb25maWcSDAoEdHlwZRgCIAEoCSJGChVMaXN0UHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJdChZMaXN0UHJvbW90aW9uc1Jlc3BvbnNlEkMKCnByb21vdGlvbnMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uIkcKFldhdGNoUHJvbW90aW9uc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRISCgVzdGFnZRgCIAEoCUgAiAEBQggKBl9zdGFnZSJrChdXYXRjaFByb21vdGlvbnNSZXNwb25zZRJCCglwcm9tb3Rpb24YASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvbW90aW9uEgwKBHR5cGUYAiABKAkicQoTR2V0UHJvbW90aW9uUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0InUKFEdldFByb21vdGlvblJlc3BvbnNlEkQKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25IABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNgoVV2F0Y2hQcm9tb3Rpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSJqChZXYXRjaFByb21vdGlvblJlc3BvbnNlEkIKCXByb21vdGlvbhgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb24SDAoEdHlwZRgCIAEoCSI2ChVBYm9ydFByb21vdGlvblJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhgKFkFib3J0UHJvbW90aW9uUmVzcG9uc2UiJAoURGVsZXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCSIXChVEZWxldGVQcm9qZWN0UmVzcG9uc2UiXgoRR2V0UHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRI7CgZmb3JtYXQYAiABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQibwoSR2V0UHJvamVjdFJlc3BvbnNlEkAKB3Byb2plY3QYASABKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCKgAQoTTGlzdFByb2plY3RzUmVxdWVzdBIWCglwYWdlX3NpemUYASABKAVIAIgBARIRCgRwYWdlGAIgASgFSAGIAQESEwoGZmlsdGVyGAMgASgJSAKIAQESCwoDdWlkGAQgAygJEhEKBG1pbmUYBSABKAhIA4gBAUIMCgpfcGFnZV9zaXplQgcKBV9wYWdlQgkKB19maWx0ZXJCBwoFX21pbmUiZgoUTGlzdFByb2plY3RzUmVzcG9uc2USPwoIcHJvamVjdHMYASADKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuUHJvamVjdBINCgV0b3RhbBgCIAEoBSJnChdHZXRQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEjsKBmZvcm1hdBgCIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCKCAQoYR2V0UHJvamVjdENvbmZpZ1Jlc3BvbnNlEk0KDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWdIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiLQoaRGVsZXRlUHJvamVjdENvbmZpZ1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSIdChtEZWxldGVQcm9qZWN0Q29uZmlnUmVzcG9uc2UiLAoZV2F0Y2hQcm9qZWN0Q29uZmlnUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJIncKGldhdGNoUHJvamVjdENvbmZpZ1Jlc3BvbnNlEksKDnByb2plY3RfY29uZmlnGAEgASgLMjMuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb2plY3RDb25maWcSDAoEdHlwZRgCIAEoCSJUChVBcHByb3ZlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJEg0KBXN0YWdlGAQgASgJIhgKFkFwcHJvdmVGcmVpZ2h0UmVzcG9uc2UiRAoURGVsZXRlRnJlaWdodFJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEg0KBWFsaWFzGAMgASgJIhcKFURlbGV0ZUZyZWlnaHRSZXNwb25zZSJ+ChFHZXRGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSDQoFYWxpYXMYAyABKAkSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0Im8KEkdldEZyZWlnaHRSZXNwb25zZRJACgdmcmVpZ2h0GAEgASgLMi0uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkZyZWlnaHRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiNwoTV2F0Y2hGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg8KB29yaWdpbnMYAiADKAkiZAoUV2F0Y2hGcmVpZ2h0UmVzcG9uc2USPgoHZnJlaWdodBgBIAEoCzItLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5GcmVpZ2h0EgwKBHR5cGUYAiABKAkiXwoVUHJvbW90ZVRvU3RhZ2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkSDwoHZnJlaWdodBgDIAEoCRIVCg1mcmVpZ2h0X2FsaWFzGAQgASgJIlwKFlByb21vdGVUb1N0YWdlUmVzcG9uc2USQgoJcHJvbW90aW9uGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbiJiChhQcm9tb3RlRG93bnN0cmVhbVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRINCgVzdGFnZRgCIAEoCRIPCgdmcmVpZ2h0GAMgASgJEhUKDWZyZWlnaHRfYWxpYXMYBCABKAkiYAoZUHJvbW90ZURvd25zdHJlYW1SZXNwb25zZRJDCgpwcm9tb3Rpb25zGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLlByb21vdGlvbiKKAQoTUXVlcnlGcmVpZ2h0UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJEhAKCGdyb3VwX2J5GAMgASgJEg0KBWdyb3VwGAQgASgJEhAKCG9yZGVyX2J5GAUgASgJEg8KB3JldmVyc2UYBiABKAgSDwoHb3JpZ2lucxgHIAMoCSLIAQoUUXVlcnlGcmVpZ2h0UmVzcG9uc2USUgoGZ3JvdXBzGAEgAygLMkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUXVlcnlGcmVpZ2h0UmVzcG9uc2UuR3JvdXBzRW50cnkaXAoLR3JvdXBzRW50cnkSCwoDa2V5GAEgASgJEjwKBXZhbHVlGAIgASgLMi0uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRnJlaWdodExpc3Q6AjgBIk0KC0ZyZWlnaHRMaXN0Ej4KB2ZyZWlnaHQYASADKAsyLS5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuRnJlaWdodCJgChlVcGRhdGVGcmVpZ2h0QWxpYXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRIRCglvbGRfYWxpYXMYAyABKAkSEQoJbmV3X2FsaWFzGAQgASgJIhwKGlVwZGF0ZUZyZWlnaHRBbGlhc1Jlc3BvbnNlIjEKD1JldmVyaWZ5UmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEg0KBXN0YWdlGAIgASgJIhIKEFJldmVyaWZ5UmVzcG9uc2UiOgoYQWJvcnRWZXJpZmljYXRpb25SZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDQoFc3RhZ2UYAiABKAkiGwoZQWJvcnRWZXJpZmljYXRpb25SZXNwb25zZSIoChVMaXN0V2FyZWhvdXNlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCSJdChZMaXN0V2FyZWhvdXNlc1Jlc3BvbnNlEkMKCndhcmVob3VzZXMYASADKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlInEKE0dldFdhcmVob3VzZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJ1ChRHZXRXYXJlaG91c2VSZXNwb25zZRJECgl3YXJlaG91c2UYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuV2FyZWhvdXNlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IjcKFldhdGNoV2FyZWhvdXNlc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJImsKF1dhdGNoV2FyZWhvdXNlc1Jlc3BvbnNlEkIKCXdhcmVob3VzZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5XYXJlaG91c2USDAoEdHlwZRgCIAEoCSI3ChZEZWxldGVXYXJlaG91c2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIZChdEZWxldGVXYXJlaG91c2VSZXNwb25zZSL0AQoWQ3JlYXRlQ29uZmlnTWFwUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJElAKBGRhdGEYBSADKAsyQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVDb25maWdNYXBSZXF1ZXN0LkRhdGFFbnRyeRIRCglyZXBsaWNhdGUYBiABKAgaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiTAoXQ3JlYXRlQ29uZmlnTWFwUmVzcG9uc2USMQoKY29uZmlnX21hcBgBIAEoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXAiTQoWRGVsZXRlQ29uZmlnTWFwUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJIhkKF0RlbGV0ZUNvbmZpZ01hcFJlc3BvbnNlIj4KFUxpc3RDb25maWdNYXBzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAiABKAgSDwoHcHJvamVjdBgBIAEoCSJMChZMaXN0Q29uZmlnTWFwc1Jlc3BvbnNlEjIKC2NvbmZpZ19tYXBzGAEgAygLMh0uazhzLmlvLmFwaS5jb3JlLnYxLkNvbmZpZ01hcCKHAQoTR2V0Q29uZmlnTWFwUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYBCABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEjsKBmZvcm1hdBgDIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJkChRHZXRDb25maWdNYXBSZXNwb25zZRIzCgpjb25maWdfbWFwGAEgASgLMh0uazhzLmlvLmFwaS5jb3JlLnYxLkNvbmZpZ01hcEgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCL0AQoWVXBkYXRlQ29uZmlnTWFwUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJElAKBGRhdGEYBSADKAsyQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVDb25maWdNYXBSZXF1ZXN0LkRhdGFFbnRyeRIRCglyZXBsaWNhdGUYBiABKAgaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiTAoXVXBkYXRlQ29uZmlnTWFwUmVzcG9uc2USMQoKY29uZmlnX21hcBgBIAEoCzIdLms4cy5pby5hcGkuY29yZS52MS5Db25maWdNYXAiygEKHENyZWF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAggASgJEgwKBHR5cGUYAyABKAkSGQoIcmVwb191cmwYBCABKAlSB3JlcG9VUkwSKQoRcmVwb191cmxfaXNfcmVnZXgYBSABKAhSDnJlcG9VUkxJc1JlZ2V4EhAKCHVzZXJuYW1lGAYgASgJEhAKCHBhc3N3b3JkGAcgASgJIlAKHUNyZWF0ZVJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCI9ChxEZWxldGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIfCh1EZWxldGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZSJ3ChlHZXRSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiaAoaR2V0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USMQoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0SAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0Ii0KGkxpc3RSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiTgobTGlzdFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgAygLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCLKAQocVXBkYXRlUmVwb0NyZWRlbnRpYWxzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YCCABKAkSDAoEdHlwZRgDIAEoCRIZCghyZXBvX3VybBgEIAEoCVIHcmVwb1VSTBIpChFyZXBvX3VybF9pc19yZWdleBgFIAEoCFIOcmVwb1VSTElzUmVnZXgSEAoIdXNlcm5hbWUYBiABKAkSEAoIcGFzc3dvcmQYByABKAkiUAodVXBkYXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IkYKHUxpc3RHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0EhQKDHN5c3RlbV9sZXZlbBgCIAEoCBIPCgdwcm9qZWN0GAEgASgJIlEKHkxpc3RHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRIvCgtjcmVkZW50aWFscxgBIAMoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXQihgIKH0NyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAYgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRJZCgRkYXRhGAQgAygLMksuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdC5EYXRhRW50cnkSEQoJcmVwbGljYXRlGAUgASgIGisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlMKIENyZWF0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEi8KC2NyZWRlbnRpYWxzGAEgASgLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCKGAgofVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYBiABKAgSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJElkKBGRhdGEYBCADKAsySy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0LkRhdGFFbnRyeRIRCglyZXBsaWNhdGUYBSABKAgaKwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiUwogVXBkYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USLwoLY3JlZGVudGlhbHMYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IlYKH0RlbGV0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAMgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIiCiBEZWxldGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZSIvChxMaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiggEKHUxpc3RBbmFseXNpc1RlbXBsYXRlc1Jlc3BvbnNlEmEKEmFuYWx5c2lzX3RlbXBsYXRlcxgBIAMoCzJFLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5BbmFseXNpc1RlbXBsYXRlIngKGkdldEFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQimgEKG0dldEFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRJiChFhbmFseXNpc190ZW1wbGF0ZRgBIAEoCzJFLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5BbmFseXNpc1RlbXBsYXRlSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0Ij4KHURlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCSIgCh5EZWxldGVBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2UiJQojTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QiswEKJExpc3RDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZXNSZXNwb25zZRKKAQoaY2x1c3Rlcl9hbmFseXNpc190ZW1wbGF0ZXMYASADKAsyTC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkuc3R1YnMucm9sbG91dHMudjFhbHBoYTEuQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSGGNsdXN0ZXJhbmFseXNpc1RlbXBsYXRlcyJuCiFHZXRDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQisAEKIkdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlUmVzcG9uc2UScQoZY2x1c3Rlcl9hbmFseXNpc190ZW1wbGF0ZRgBIAEoCzJMLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5zdHVicy5yb2xsb3V0cy52MWFscGhhMS5DbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZUgAEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCI0CiREZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QSDAoEbmFtZRgCIAEoCSInCiVEZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlInUKFUdldEFuYWx5c2lzUnVuUmVxdWVzdBIRCgluYW1lc3BhY2UYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiiwEKFkdldEFuYWx5c2lzUnVuUmVzcG9uc2USWAoMYW5hbHlzaXNfcnVuGAEgASgLMkAuZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnN0dWJzLnJvbGxvdXRzLnYxYWxwaGExLkFuYWx5c2lzUnVuSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0ImkKGUdldEFuYWx5c2lzUnVuTG9nc1JlcXVlc3QSEQoJbmFtZXNwYWNlGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLbWV0cmljX25hbWUYAyABKAkSFgoOY29udGFpbmVyX25hbWUYBCABKAkiKwoaR2V0QW5hbHlzaXNSdW5Mb2dzUmVzcG9uc2USDQoFY2h1bmsYASABKAkiKwoYTGlzdFByb2plY3RFdmVudHNSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkiRgoZTGlzdFByb2plY3RFdmVudHNSZXNwb25zZRIpCgZldmVudHMYASADKAsyGS5rOHMuaW8uYXBpLmNvcmUudjEuRXZlbnQiLAoZTGlzdFByb21vdGlvblRhc2tzUmVxdWVzdBIPCgdwcm9qZWN0GAEgASgJImoKGkxpc3RQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEkwKD3Byb21vdGlvbl90YXNrcxgBIAMoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25UYXNrInUKF0dldFByb21vdGlvblRhc2tSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRI7CgZmb3JtYXQYAyABKA4yKy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SYXdGb3JtYXQiggEKGEdldFByb21vdGlvblRhc2tSZXNwb25zZRJNCg5wcm9tb3Rpb25fdGFzaxgBIAEoCzIzLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS52MWFscGhhMS5Qcm9tb3Rpb25UYXNrSAASDQoDcmF3GAIgASgMSABCCAoGcmVzdWx0IiIKIExpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXF1ZXN0IoABCiFMaXN0Q2x1c3RlclByb21vdGlvblRhc2tzUmVzcG9uc2USWwoXY2x1c3Rlcl9wcm9tb3Rpb25fdGFza3MYASADKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkudjFhbHBoYTEuQ2x1c3RlclByb21vdGlvblRhc2siawoeR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXF1ZXN0EgwKBG5hbWUYAiABKAkSOwoGZm9ybWF0GAMgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IqYBCh9HZXRDbHVzdGVyUHJvbW90aW9uVGFza1Jlc3BvbnNlEmoKDnByb21vdGlvbl90YXNrGAEgASgLMjouZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnYxYWxwaGExLkNsdXN0ZXJQcm9tb3Rpb25UYXNrSABSFGNsdXN0ZXJQcm9tb3Rpb25UYXNrEg0KA3JhdxgCIAEoDEgAQggKBnJlc3VsdCJSChFDcmVhdGVSb2xlUmVxdWVzdBI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJTChJDcmVhdGVSb2xlUmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiMgoRRGVsZXRlUm9sZVJlcXVlc3QSDwoHcHJvamVjdBgBIAEoCRIMCgRuYW1lGAIgASgJIhQKEkRlbGV0ZVJvbGVSZXNwb25zZSKYAQoOR2V0Um9sZVJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAUgASgIEg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRIUCgxhc19yZXNvdXJjZXMYAyABKAgSOwoGZm9ybWF0GAQgASgOMisuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmF3Rm9ybWF0IroBCg9HZXRSb2xlUmVzcG9uc2USPwoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGVIABJNCglyZXNvdXJjZXMYAiABKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlUmVzb3VyY2VzSAASDQoDcmF3GAMgASgMSABCCAoGcmVzdWx0IkoKBkNsYWltcxJACgZjbGFpbXMYASADKAsyMC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5DbGFpbSLRAQoMR3JhbnRSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEcm9sZRgCIAEoCRI/Cgt1c2VyX2NsYWltcxgDIAEoCzIoLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNsYWltc0gAElYKEHJlc291cmNlX2RldGFpbHMYBCABKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5SZXNvdXJjZURldGFpbHNIAEIJCgdyZXF1ZXN0Ik4KDUdyYW50UmVzcG9uc2USPQoEcm9sZRgBIAEoCzIvLmdpdGh1Yi5jb20uYWt1aXR5LmthcmdvLmFwaS5yYmFjLnYxYWxwaGExLlJvbGUiTwoQTGlzdFJvbGVzUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYAyABKAgSDwoHcHJvamVjdBgBIAEoCRIUCgxhc19yZXNvdXJjZXMYAiABKAgioAEKEUxpc3RSb2xlc1Jlc3BvbnNlEj4KBXJvbGVzGAEgAygLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZRJLCglyZXNvdXJjZXMYAiADKAsyOC5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlUmVzb3VyY2VzItIBCg1SZXZva2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEcm9sZRgCIAEoCRI/Cgt1c2VyX2NsYWltcxgDIAEoCzIoLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNsYWltc0gAElYKEHJlc291cmNlX2RldGFpbHMYBCABKAsyOi5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5SZXNvdXJjZURldGFpbHNIAEIJCgdyZXF1ZXN0Ik8KDlJldm9rZVJlc3BvbnNlEj0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIlIKEVVwZGF0ZVJvbGVSZXF1ZXN0Ej0KBHJvbGUYASABKAsyLy5naXRodWIuY29tLmFrdWl0eS5rYXJnby5hcGkucmJhYy52MWFscGhhMS5Sb2xlIlMKElVwZGF0ZVJvbGVSZXNwb25zZRI9CgRyb2xlGAEgASgLMi8uZ2l0aHViLmNvbS5ha3VpdHkua2FyZ28uYXBpLnJiYWMudjFhbHBoYTEuUm9sZSJfChVDcmVhdGVBUElUb2tlblJlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSEQoJcm9sZV9uYW1lGAMgASgJEgwKBG5hbWUYBCABKAkiSgoWQ3JlYXRlQVBJVG9rZW5SZXNwb25zZRIwCgx0b2tlbl9zZWNyZXQYASABKAsyGi5rOHMuaW8uYXBpLmNvcmUudjEuU2VjcmV0IkwKFURlbGV0ZUFQSVRva2VuUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJIhgKFkRlbGV0ZUFQSVRva2VuUmVzcG9uc2UihgEKEkdldEFQSVRva2VuUmVxdWVzdBIUCgxzeXN0ZW1fbGV2ZWwYASABKAgSDwoHcHJvamVjdBgCIAEoCRIMCgRuYW1lGAMgASgJEjsKBmZvcm1hdBgEIAEoDjIrLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJhd0Zvcm1hdCJiChNHZXRBUElUb2tlblJlc3BvbnNlEjIKDHRva2VuX3NlY3JldBgBIAEoCzIaLms4cy5pby5hcGkuY29yZS52MS5TZWNyZXRIABINCgNyYXcYAiABKAxIAEIICgZyZXN1bHQiUAoUTGlzdEFQSVRva2Vuc1JlcXVlc3QSFAoMc3lzdGVtX2xldmVsGAEgASgIEg8KB3Byb2plY3QYAiABKAkSEQoJcm9sZV9uYW1lGAMgASgJIkoKFUxpc3RBUElUb2tlbnNSZXNwb25zZRIxCg10b2tlbl9zZWNyZXRzGAEgAygLMhouazhzLmlvLmFwaS5jb3JlLnYxLlNlY3JldCJOChZSZWZyZXNoUmVzb3VyY2VSZXF1ZXN0Eg8KB3Byb2plY3QYASABKAkSDAoEbmFtZRgCIAEoCRIVCg1yZXNvdXJjZV90eXBlGAMgASgJIkEKF1JlZnJlc2hSZXNvdXJjZVJlc3BvbnNlEiYKCHJlc291cmNlGAEgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueSpRCglSYXdGb3JtYXQSGgoWUkFXX0ZPUk1BVF9VTlNQRUNJRklFRBAAEhMKD1JBV19GT1JNQVRfSlNPThABEhMKD1JBV19GT1JNQVRfWUFNTBACMsVXCgxLYXJnb1NlcnZpY2USgwEKDkdldFZlcnNpb25JbmZvEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0VmVyc2lvbkluZm9SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0VmVyc2lvbkluZm9SZXNwb25zZRJ0CglHZXRDb25maWcSMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdSZXF1ZXN0GjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q29uZmlnUmVzcG9uc2UShgEKD0dldFB1YmxpY0NvbmZpZxI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFB1YmxpY0NvbmZpZ1JlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQdWJsaWNDb25maWdSZXNwb25zZRJ3CgpBZG1pbkxvZ2luEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQWRtaW5Mb2dpblJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BZG1pbkxvZ2luUmVzcG9uc2USgwEKDkNyZWF0ZVJlc291cmNlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVzb3VyY2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVzb3VyY2VSZXNwb25zZRKbAQoWQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZRI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkNyZWF0ZU9yVXBkYXRlUmVzb3VyY2VSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlT3JVcGRhdGVSZXNvdXJjZVJlc3BvbnNlEoMBCg5VcGRhdGVSZXNvdXJjZRI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlc291cmNlUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlc291cmNlUmVzcG9uc2USgwEKDkRlbGV0ZVJlc291cmNlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVzb3VyY2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUmVzb3VyY2VSZXNwb25zZRKGAQoPUmVmcmVzaFJlc291cmNlEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmVmcmVzaFJlc291cmNlUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJlZnJlc2hSZXNvdXJjZVJlc3BvbnNlEncKCkxpc3RTdGFnZXMSMy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0U3RhZ2VzUmVxdWVzdBo0LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RTdGFnZXNSZXNwb25zZRJ3CgpMaXN0SW1hZ2VzEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEltYWdlc1JlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0SW1hZ2VzUmVzcG9uc2UScQoIR2V0U3RhZ2USMS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlcXVlc3QaMi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZVJlc3BvbnNlEpgBChVHZXRTdGFnZUhlYWx0aE91dHB1dHMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRTdGFnZUhlYWx0aE91dHB1dHNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0U3RhZ2VIZWFsdGhPdXRwdXRzUmVzcG9uc2USfAoLV2F0Y2hTdGFnZXMSNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFN0YWdlc1JlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFN0YWdlc1Jlc3BvbnNlMAESegoLRGVsZXRlU3RhZ2USNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVTdGFnZVJlcXVlc3QaNS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVTdGFnZVJlc3BvbnNlEokBChBHZXRDbHVzdGVyQ29uZmlnEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckNvbmZpZ1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDbHVzdGVyQ29uZmlnUmVzcG9uc2USkgEKE0RlbGV0ZUNsdXN0ZXJDb25maWcSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQ29uZmlnUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNsdXN0ZXJDb25maWdSZXNwb25zZRKRAQoSV2F0Y2hDbHVzdGVyQ29uZmlnEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hDbHVzdGVyQ29uZmlnUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoQ2x1c3RlckNvbmZpZ1Jlc3BvbnNlMAESgwEKDkxpc3RQcm9tb3Rpb25zEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvbnNSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFByb21vdGlvbnNSZXNwb25zZRKIAQoPV2F0Y2hQcm9tb3Rpb25zEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hQcm9tb3Rpb25zUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uc1Jlc3BvbnNlMAESfQoMR2V0UHJvbW90aW9uEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb21vdGlvblJlc3BvbnNlEoUBCg5XYXRjaFByb21vdGlvbhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvbW90aW9uUmVzcG9uc2UwARKDAQoOQWJvcnRQcm9tb3Rpb24SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFByb21vdGlvblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFByb21vdGlvblJlc3BvbnNlEoABCg1EZWxldGVQcm9qZWN0EjYuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdFJlcXVlc3QaNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0UmVzcG9uc2USdwoKR2V0UHJvamVjdBIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdFJlc3BvbnNlEn0KDExpc3RQcm9qZWN0cxI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0c1JlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvamVjdHNSZXNwb25zZRKJAQoQR2V0UHJvamVjdENvbmZpZxI5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFByb2plY3RDb25maWdSZXF1ZXN0GjouYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvamVjdENvbmZpZ1Jlc3BvbnNlEpIBChNEZWxldGVQcm9qZWN0Q29uZmlnEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUHJvamVjdENvbmZpZ1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVQcm9qZWN0Q29uZmlnUmVzcG9uc2USkQEKEldhdGNoUHJvamVjdENvbmZpZxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoUHJvamVjdENvbmZpZ1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFByb2plY3RDb25maWdSZXNwb25zZTABEoMBCg5BcHByb3ZlRnJlaWdodBI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFwcHJvdmVGcmVpZ2h0UmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkFwcHJvdmVGcmVpZ2h0UmVzcG9uc2USgAEKDURlbGV0ZUZyZWlnaHQSNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVGcmVpZ2h0UmVxdWVzdBo3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUZyZWlnaHRSZXNwb25zZRJ3CgpHZXRGcmVpZ2h0EjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0RnJlaWdodFJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRGcmVpZ2h0UmVzcG9uc2USfwoMV2F0Y2hGcmVpZ2h0EjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hGcmVpZ2h0UmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLldhdGNoRnJlaWdodFJlc3BvbnNlMAESgwEKDlByb21vdGVUb1N0YWdlEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZVRvU3RhZ2VSZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUHJvbW90ZVRvU3RhZ2VSZXNwb25zZRKMAQoRUHJvbW90ZURvd25zdHJlYW0SOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlRG93bnN0cmVhbVJlcXVlc3QaOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5Qcm9tb3RlRG93bnN0cmVhbVJlc3BvbnNlEn0KDFF1ZXJ5RnJlaWdodBI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlF1ZXJ5RnJlaWdodFJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5RdWVyeUZyZWlnaHRSZXNwb25zZRKPAQoSVXBkYXRlRnJlaWdodEFsaWFzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlRnJlaWdodEFsaWFzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUZyZWlnaHRBbGlhc1Jlc3BvbnNlEnEKCFJldmVyaWZ5EjEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2ZXJpZnlSZXF1ZXN0GjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuUmV2ZXJpZnlSZXNwb25zZRKMAQoRQWJvcnRWZXJpZmljYXRpb24SOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFZlcmlmaWNhdGlvblJlcXVlc3QaOy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5BYm9ydFZlcmlmaWNhdGlvblJlc3BvbnNlEoMBCg5MaXN0V2FyZWhvdXNlcxI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RXYXJlaG91c2VzUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RXYXJlaG91c2VzUmVzcG9uc2USfQoMR2V0V2FyZWhvdXNlEjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0V2FyZWhvdXNlUmVxdWVzdBo2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFdhcmVob3VzZVJlc3BvbnNlEogBCg9XYXRjaFdhcmVob3VzZXMSOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5XYXRjaFdhcmVob3VzZXNSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuV2F0Y2hXYXJlaG91c2VzUmVzcG9uc2UwARKGAQoPRGVsZXRlV2FyZWhvdXNlEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlV2FyZWhvdXNlUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVdhcmVob3VzZVJlc3BvbnNlEpgBChVDcmVhdGVSZXBvQ3JlZGVudGlhbHMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSZXBvQ3JlZGVudGlhbHNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USmAEKFURlbGV0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKPAQoSR2V0UmVwb0NyZWRlbnRpYWxzEjsuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UmVwb0NyZWRlbnRpYWxzUmVxdWVzdBo8LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJlcG9DcmVkZW50aWFsc1Jlc3BvbnNlEpIBChNMaXN0UmVwb0NyZWRlbnRpYWxzEjwuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UmVwb0NyZWRlbnRpYWxzUmVzcG9uc2USmAEKFVVwZGF0ZVJlcG9DcmVkZW50aWFscxI+LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZVJlcG9DcmVkZW50aWFsc1JlcXVlc3QaPy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSZXBvQ3JlZGVudGlhbHNSZXNwb25zZRKbAQoWTGlzdEdlbmVyaWNDcmVkZW50aWFscxI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEqEBChhDcmVhdGVHZW5lcmljQ3JlZGVudGlhbHMSQS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXF1ZXN0GkIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVzcG9uc2USoQEKGFVwZGF0ZUdlbmVyaWNDcmVkZW50aWFscxJBLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUdlbmVyaWNDcmVkZW50aWFsc1JlcXVlc3QaQi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVHZW5lcmljQ3JlZGVudGlhbHNSZXNwb25zZRKhAQoYRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzEkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlR2VuZXJpY0NyZWRlbnRpYWxzUmVxdWVzdBpCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUdlbmVyaWNDcmVkZW50aWFsc1Jlc3BvbnNlEoYBCg9DcmVhdGVDb25maWdNYXASOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVDb25maWdNYXBSZXF1ZXN0GjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQ29uZmlnTWFwUmVzcG9uc2UShgEKD0RlbGV0ZUNvbmZpZ01hcBI4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUNvbmZpZ01hcFJlcXVlc3QaOS5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDb25maWdNYXBSZXNwb25zZRKDAQoOTGlzdENvbmZpZ01hcHMSNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q29uZmlnTWFwc1JlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q29uZmlnTWFwc1Jlc3BvbnNlEn0KDEdldENvbmZpZ01hcBI1LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldENvbmZpZ01hcFJlcXVlc3QaNi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRDb25maWdNYXBSZXNwb25zZRKGAQoPVXBkYXRlQ29uZmlnTWFwEjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlQ29uZmlnTWFwUmVxdWVzdBo5LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlVwZGF0ZUNvbmZpZ01hcFJlc3BvbnNlEpgBChVMaXN0QW5hbHlzaXNUZW1wbGF0ZXMSPi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0QW5hbHlzaXNUZW1wbGF0ZXNSZXF1ZXN0Gj8uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USkgEKE0dldEFuYWx5c2lzVGVtcGxhdGUSPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1RlbXBsYXRlUmVxdWVzdBo9LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKbAQoWRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZRI/LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZUFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEq0BChxMaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzEkUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlc1JlcXVlc3QaRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVzUmVzcG9uc2USpwEKGkdldENsdXN0ZXJBbmFseXNpc1RlbXBsYXRlEkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXF1ZXN0GkQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlckFuYWx5c2lzVGVtcGxhdGVSZXNwb25zZRKwAQodRGVsZXRlQ2x1c3RlckFuYWx5c2lzVGVtcGxhdGUSRi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlcXVlc3QaRy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVDbHVzdGVyQW5hbHlzaXNUZW1wbGF0ZVJlc3BvbnNlEoMBCg5HZXRBbmFseXNpc1J1bhI3LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVxdWVzdBo4LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuUmVzcG9uc2USkQEKEkdldEFuYWx5c2lzUnVuTG9ncxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldEFuYWx5c2lzUnVuTG9nc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRBbmFseXNpc1J1bkxvZ3NSZXNwb25zZTABEowBChFMaXN0UHJvamVjdEV2ZW50cxI6LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVxdWVzdBo7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9qZWN0RXZlbnRzUmVzcG9uc2USjwEKEkxpc3RQcm9tb3Rpb25UYXNrcxI7LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RQcm9tb3Rpb25UYXNrc1JlcXVlc3QaPC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5MaXN0UHJvbW90aW9uVGFza3NSZXNwb25zZRKkAQoZTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrcxJCLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RDbHVzdGVyUHJvbW90aW9uVGFza3NSZXF1ZXN0GkMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdENsdXN0ZXJQcm9tb3Rpb25UYXNrc1Jlc3BvbnNlEokBChBHZXRQcm9tb3Rpb25UYXNrEjkuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0UHJvbW90aW9uVGFza1JlcXVlc3QaOi5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRQcm9tb3Rpb25UYXNrUmVzcG9uc2USngEKF0dldENsdXN0ZXJQcm9tb3Rpb25UYXNrEkAuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXF1ZXN0GkEuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0Q2x1c3RlclByb21vdGlvblRhc2tSZXNwb25zZRJ3CgpDcmVhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5DcmVhdGVSb2xlUmVzcG9uc2USdwoKRGVsZXRlUm9sZRIzLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkRlbGV0ZVJvbGVSZXF1ZXN0GjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuRGVsZXRlUm9sZVJlc3BvbnNlEm4KB0dldFJvbGUSMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5HZXRSb2xlUmVxdWVzdBoxLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdldFJvbGVSZXNwb25zZRJoCgVHcmFudBIuLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVxdWVzdBovLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkdyYW50UmVzcG9uc2USdAoJTGlzdFJvbGVzEjIuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdFJvbGVzUmVxdWVzdBozLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RSb2xlc1Jlc3BvbnNlEmsKBlJldm9rZRIvLmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLlJldm9rZVJlcXVlc3QaMC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5SZXZva2VSZXNwb25zZRJ3CgpVcGRhdGVSb2xlEjMuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuVXBkYXRlUm9sZVJlcXVlc3QaNC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5VcGRhdGVSb2xlUmVzcG9uc2USgwEKDkNyZWF0ZUFQSVRva2VuEjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQVBJVG9rZW5SZXF1ZXN0GjguYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuQ3JlYXRlQVBJVG9rZW5SZXNwb25zZRKDAQoORGVsZXRlQVBJVG9rZW4SNy5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBUElUb2tlblJlcXVlc3QaOC5ha3VpdHkuaW8ua2FyZ28uc2VydmljZS52MWFscGhhMS5EZWxldGVBUElUb2tlblJlc3BvbnNlEnoKC0dldEFQSVRva2VuEjQuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QVBJVG9rZW5SZXF1ZXN0GjUuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuR2V0QVBJVG9rZW5SZXNwb25zZRKAAQoNTGlzdEFQSVRva2VucxI2LmFrdWl0eS5pby5rYXJnby5zZXJ2aWNlLnYxYWxwaGExLkxpc3RBUElUb2tlbnNSZXF1ZXN0GjcuYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTEuTGlzdEFQSVRva2Vuc1Jlc3BvbnNlQpMCCiRjb20uYWt1aXR5LmlvLmthcmdvLnNlcnZpY2UudjFhbHBoYTFCDFNlcnZpY2VQcm90b1ABWjhnaXRodWIuY29tL2FrdWl0eS9rYXJnby9hcGkvc2VydmljZS92MWFscGhhMTtzdmN2MWFscGhhMaICBEFJS1OqAiBBa3VpdHkuSW8uS2FyZ28uU2VydmljZS5WMWFscGhhMcoCIEFrdWl0eVxJb1xLYXJnb1xTZXJ2aWNlXFYxYWxwaGEx4gIsQWt1aXR5XElvXEthcmdvXFNlcnZpY2VcVjFhbHBoYTFcR1BCTWV0YWRhdGHqAiRBa3VpdHk6OklvOjpLYXJnbzo6U2VydmljZTo6VjFhbHBoYTFiBnByb3RvMw", [file_google_protobuf_timestamp, file_api_v1alpha1_generated, file_k8s_io_api_core_v1_generated, file_api_stubs_rollouts_v1alpha1_generated, file_api_rbac_v1alpha1_generated, file_google_protobuf_any]); /** * ComponentVersions contains version information for different Kargo components.