From 4846ad686059f991615ab0eab39494b3cd07cac5 Mon Sep 17 00:00:00 2001 From: Alex Tugarev Date: Wed, 29 Nov 2023 11:09:52 +0000 Subject: [PATCH 1/2] [papi] Add `UserService/UpdateUser` to proto --- components/public-api/gitpod/v1/user.proto | 47 + components/public-api/go/v1/user.pb.go | 1257 +++++++++++++---- components/public-api/go/v1/user_grpc.pb.go | 38 + .../go/v1/v1connect/user.connect.go | 24 + .../go/v1/v1connect/user.proxy.connect.go | 10 + .../typescript/src/gitpod/v1/user_connect.ts | 13 +- .../typescript/src/gitpod/v1/user_pb.ts | 374 ++++- 7 files changed, 1495 insertions(+), 268 deletions(-) diff --git a/components/public-api/gitpod/v1/user.proto b/components/public-api/gitpod/v1/user.proto index d2ade1d7b07645..81e4a71ccf7686 100644 --- a/components/public-api/gitpod/v1/user.proto +++ b/components/public-api/gitpod/v1/user.proto @@ -11,6 +11,9 @@ option go_package = "github.com/gitpod-io/gitpod/components/public-api/go/v1"; service UserService { // GetAuthenticatedUser allows to retrieve the current user. rpc GetAuthenticatedUser(GetAuthenticatedUserRequest) returns (GetAuthenticatedUserResponse) {} + + // UpdateUser updates the properties of a user. + rpc UpdateUser(UpdateUserRequest) returns (UpdateUserResponse) {} } message GetAuthenticatedUserRequest {} @@ -18,6 +21,50 @@ message GetAuthenticatedUserResponse { User user = 1; } +message UpdateUserRequest { + string user_id = 1; + optional string name = 2; + optional string accepted_privacy_policy_date = 3; + optional ProfileDetails profile = 4; + message ProfileDetails { + optional string last_updated_details_nudge = 1; + optional string accepted_privacy_policy_date = 2; + optional string company_name = 3; + optional string email_address = 4; + optional string job_role = 5; + optional string job_role_other = 6; + repeated string exploration_reasons = 7; + repeated string signup_goals = 8; + optional string signup_goals_other = 10; + optional string onboarded_timestamp = 11; + optional string company_size = 12; + } + optional string email_address = 5; + optional EditorReference editor_settings = 6; + optional EmailNotificationSettings email_notification_settings = 7; + message EmailNotificationSettings { + optional bool allows_changelog_mail = 1; + optional bool allows_devx_mail = 2; + optional bool allows_onboarding_mail = 3; + } + repeated WorkspaceAutostartOption workspace_autostart_options = 8; + message WorkspaceAutostartOption { + string clone_url = 1; + string organization_id = 2; + string workspace_class = 3; + EditorReference editor_settings = 4; + string region = 5; + } + optional WorkspaceTimeoutSettings workspace_timeout_settings = 9; + message WorkspaceTimeoutSettings { + optional google.protobuf.Duration inactivity = 1; + optional bool disabled_disconnected = 2; + } +} +message UpdateUserResponse { + User user = 1; +} + message User { // id is a UUID of the user string id = 1; diff --git a/components/public-api/go/v1/user.pb.go b/components/public-api/go/v1/user.pb.go index 8750f5ff82d51d..df13d6bef44ef4 100644 --- a/components/public-api/go/v1/user.pb.go +++ b/components/public-api/go/v1/user.pb.go @@ -78,7 +78,7 @@ func (x User_UserFeatureFlag) Number() protoreflect.EnumNumber { // Deprecated: Use User_UserFeatureFlag.Descriptor instead. func (User_UserFeatureFlag) EnumDescriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 0} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 0} } type User_RoleOrPermission int32 @@ -154,7 +154,7 @@ func (x User_RoleOrPermission) Number() protoreflect.EnumNumber { // Deprecated: Use User_RoleOrPermission.Descriptor instead. func (User_RoleOrPermission) EnumDescriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 1} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 1} } type GetAuthenticatedUserRequest struct { @@ -242,6 +242,164 @@ func (x *GetAuthenticatedUserResponse) GetUser() *User { return nil } +type UpdateUserRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` + AcceptedPrivacyPolicyDate *string `protobuf:"bytes,3,opt,name=accepted_privacy_policy_date,json=acceptedPrivacyPolicyDate,proto3,oneof" json:"accepted_privacy_policy_date,omitempty"` + Profile *UpdateUserRequest_ProfileDetails `protobuf:"bytes,4,opt,name=profile,proto3,oneof" json:"profile,omitempty"` + EmailAddress *string `protobuf:"bytes,5,opt,name=email_address,json=emailAddress,proto3,oneof" json:"email_address,omitempty"` + EditorSettings *EditorReference `protobuf:"bytes,6,opt,name=editor_settings,json=editorSettings,proto3,oneof" json:"editor_settings,omitempty"` + EmailNotificationSettings *UpdateUserRequest_EmailNotificationSettings `protobuf:"bytes,7,opt,name=email_notification_settings,json=emailNotificationSettings,proto3,oneof" json:"email_notification_settings,omitempty"` + WorkspaceAutostartOptions []*UpdateUserRequest_WorkspaceAutostartOption `protobuf:"bytes,8,rep,name=workspace_autostart_options,json=workspaceAutostartOptions,proto3" json:"workspace_autostart_options,omitempty"` + WorkspaceTimeoutSettings *UpdateUserRequest_WorkspaceTimeoutSettings `protobuf:"bytes,9,opt,name=workspace_timeout_settings,json=workspaceTimeoutSettings,proto3,oneof" json:"workspace_timeout_settings,omitempty"` +} + +func (x *UpdateUserRequest) Reset() { + *x = UpdateUserRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_user_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateUserRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateUserRequest) ProtoMessage() {} + +func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_user_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateUserRequest.ProtoReflect.Descriptor instead. +func (*UpdateUserRequest) Descriptor() ([]byte, []int) { + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2} +} + +func (x *UpdateUserRequest) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *UpdateUserRequest) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *UpdateUserRequest) GetAcceptedPrivacyPolicyDate() string { + if x != nil && x.AcceptedPrivacyPolicyDate != nil { + return *x.AcceptedPrivacyPolicyDate + } + return "" +} + +func (x *UpdateUserRequest) GetProfile() *UpdateUserRequest_ProfileDetails { + if x != nil { + return x.Profile + } + return nil +} + +func (x *UpdateUserRequest) GetEmailAddress() string { + if x != nil && x.EmailAddress != nil { + return *x.EmailAddress + } + return "" +} + +func (x *UpdateUserRequest) GetEditorSettings() *EditorReference { + if x != nil { + return x.EditorSettings + } + return nil +} + +func (x *UpdateUserRequest) GetEmailNotificationSettings() *UpdateUserRequest_EmailNotificationSettings { + if x != nil { + return x.EmailNotificationSettings + } + return nil +} + +func (x *UpdateUserRequest) GetWorkspaceAutostartOptions() []*UpdateUserRequest_WorkspaceAutostartOption { + if x != nil { + return x.WorkspaceAutostartOptions + } + return nil +} + +func (x *UpdateUserRequest) GetWorkspaceTimeoutSettings() *UpdateUserRequest_WorkspaceTimeoutSettings { + if x != nil { + return x.WorkspaceTimeoutSettings + } + return nil +} + +type UpdateUserResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` +} + +func (x *UpdateUserResponse) Reset() { + *x = UpdateUserResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_user_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateUserResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateUserResponse) ProtoMessage() {} + +func (x *UpdateUserResponse) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_user_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateUserResponse.ProtoReflect.Descriptor instead. +func (*UpdateUserResponse) Descriptor() ([]byte, []int) { + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{3} +} + +func (x *UpdateUserResponse) GetUser() *User { + if x != nil { + return x.User + } + return nil +} + type User struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -253,7 +411,7 @@ type User struct { // // +optional if not set, this account is owned by the installation. OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` - // name is the username + // name is the full name of the user Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` // avatar_url is a link to the user avatar AvatarUrl string `protobuf:"bytes,4,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"` @@ -304,7 +462,7 @@ type User struct { func (x *User) Reset() { *x = User{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[2] + mi := &file_gitpod_v1_user_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -317,7 +475,7 @@ func (x *User) String() string { func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[2] + mi := &file_gitpod_v1_user_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -330,7 +488,7 @@ func (x *User) ProtoReflect() protoreflect.Message { // Deprecated: Use User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4} } func (x *User) GetId() string { @@ -488,7 +646,7 @@ type Identity struct { func (x *Identity) Reset() { *x = Identity{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[3] + mi := &file_gitpod_v1_user_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -501,7 +659,7 @@ func (x *Identity) String() string { func (*Identity) ProtoMessage() {} func (x *Identity) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[3] + mi := &file_gitpod_v1_user_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -514,7 +672,7 @@ func (x *Identity) ProtoReflect() protoreflect.Message { // Deprecated: Use Identity.ProtoReflect.Descriptor instead. func (*Identity) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{3} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{5} } func (x *Identity) GetAuthProviderId() string { @@ -552,6 +710,330 @@ func (x *Identity) GetLastSigninTime() *timestamppb.Timestamp { return nil } +type UpdateUserRequest_ProfileDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LastUpdatedDetailsNudge *string `protobuf:"bytes,1,opt,name=last_updated_details_nudge,json=lastUpdatedDetailsNudge,proto3,oneof" json:"last_updated_details_nudge,omitempty"` + AcceptedPrivacyPolicyDate *string `protobuf:"bytes,2,opt,name=accepted_privacy_policy_date,json=acceptedPrivacyPolicyDate,proto3,oneof" json:"accepted_privacy_policy_date,omitempty"` + CompanyName *string `protobuf:"bytes,3,opt,name=company_name,json=companyName,proto3,oneof" json:"company_name,omitempty"` + EmailAddress *string `protobuf:"bytes,4,opt,name=email_address,json=emailAddress,proto3,oneof" json:"email_address,omitempty"` + JobRole *string `protobuf:"bytes,5,opt,name=job_role,json=jobRole,proto3,oneof" json:"job_role,omitempty"` + JobRoleOther *string `protobuf:"bytes,6,opt,name=job_role_other,json=jobRoleOther,proto3,oneof" json:"job_role_other,omitempty"` + ExplorationReasons []string `protobuf:"bytes,7,rep,name=exploration_reasons,json=explorationReasons,proto3" json:"exploration_reasons,omitempty"` + SignupGoals []string `protobuf:"bytes,8,rep,name=signup_goals,json=signupGoals,proto3" json:"signup_goals,omitempty"` + SignupGoalsOther *string `protobuf:"bytes,10,opt,name=signup_goals_other,json=signupGoalsOther,proto3,oneof" json:"signup_goals_other,omitempty"` + OnboardedTimestamp *string `protobuf:"bytes,11,opt,name=onboarded_timestamp,json=onboardedTimestamp,proto3,oneof" json:"onboarded_timestamp,omitempty"` + CompanySize *string `protobuf:"bytes,12,opt,name=company_size,json=companySize,proto3,oneof" json:"company_size,omitempty"` +} + +func (x *UpdateUserRequest_ProfileDetails) Reset() { + *x = UpdateUserRequest_ProfileDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_user_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateUserRequest_ProfileDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateUserRequest_ProfileDetails) ProtoMessage() {} + +func (x *UpdateUserRequest_ProfileDetails) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_user_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateUserRequest_ProfileDetails.ProtoReflect.Descriptor instead. +func (*UpdateUserRequest_ProfileDetails) Descriptor() ([]byte, []int) { + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *UpdateUserRequest_ProfileDetails) GetLastUpdatedDetailsNudge() string { + if x != nil && x.LastUpdatedDetailsNudge != nil { + return *x.LastUpdatedDetailsNudge + } + return "" +} + +func (x *UpdateUserRequest_ProfileDetails) GetAcceptedPrivacyPolicyDate() string { + if x != nil && x.AcceptedPrivacyPolicyDate != nil { + return *x.AcceptedPrivacyPolicyDate + } + return "" +} + +func (x *UpdateUserRequest_ProfileDetails) GetCompanyName() string { + if x != nil && x.CompanyName != nil { + return *x.CompanyName + } + return "" +} + +func (x *UpdateUserRequest_ProfileDetails) GetEmailAddress() string { + if x != nil && x.EmailAddress != nil { + return *x.EmailAddress + } + return "" +} + +func (x *UpdateUserRequest_ProfileDetails) GetJobRole() string { + if x != nil && x.JobRole != nil { + return *x.JobRole + } + return "" +} + +func (x *UpdateUserRequest_ProfileDetails) GetJobRoleOther() string { + if x != nil && x.JobRoleOther != nil { + return *x.JobRoleOther + } + return "" +} + +func (x *UpdateUserRequest_ProfileDetails) GetExplorationReasons() []string { + if x != nil { + return x.ExplorationReasons + } + return nil +} + +func (x *UpdateUserRequest_ProfileDetails) GetSignupGoals() []string { + if x != nil { + return x.SignupGoals + } + return nil +} + +func (x *UpdateUserRequest_ProfileDetails) GetSignupGoalsOther() string { + if x != nil && x.SignupGoalsOther != nil { + return *x.SignupGoalsOther + } + return "" +} + +func (x *UpdateUserRequest_ProfileDetails) GetOnboardedTimestamp() string { + if x != nil && x.OnboardedTimestamp != nil { + return *x.OnboardedTimestamp + } + return "" +} + +func (x *UpdateUserRequest_ProfileDetails) GetCompanySize() string { + if x != nil && x.CompanySize != nil { + return *x.CompanySize + } + return "" +} + +type UpdateUserRequest_EmailNotificationSettings struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AllowsChangelogMail *bool `protobuf:"varint,1,opt,name=allows_changelog_mail,json=allowsChangelogMail,proto3,oneof" json:"allows_changelog_mail,omitempty"` + AllowsDevxMail *bool `protobuf:"varint,2,opt,name=allows_devx_mail,json=allowsDevxMail,proto3,oneof" json:"allows_devx_mail,omitempty"` + AllowsOnboardingMail *bool `protobuf:"varint,3,opt,name=allows_onboarding_mail,json=allowsOnboardingMail,proto3,oneof" json:"allows_onboarding_mail,omitempty"` +} + +func (x *UpdateUserRequest_EmailNotificationSettings) Reset() { + *x = UpdateUserRequest_EmailNotificationSettings{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_user_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateUserRequest_EmailNotificationSettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateUserRequest_EmailNotificationSettings) ProtoMessage() {} + +func (x *UpdateUserRequest_EmailNotificationSettings) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_user_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateUserRequest_EmailNotificationSettings.ProtoReflect.Descriptor instead. +func (*UpdateUserRequest_EmailNotificationSettings) Descriptor() ([]byte, []int) { + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 1} +} + +func (x *UpdateUserRequest_EmailNotificationSettings) GetAllowsChangelogMail() bool { + if x != nil && x.AllowsChangelogMail != nil { + return *x.AllowsChangelogMail + } + return false +} + +func (x *UpdateUserRequest_EmailNotificationSettings) GetAllowsDevxMail() bool { + if x != nil && x.AllowsDevxMail != nil { + return *x.AllowsDevxMail + } + return false +} + +func (x *UpdateUserRequest_EmailNotificationSettings) GetAllowsOnboardingMail() bool { + if x != nil && x.AllowsOnboardingMail != nil { + return *x.AllowsOnboardingMail + } + return false +} + +type UpdateUserRequest_WorkspaceAutostartOption struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CloneUrl string `protobuf:"bytes,1,opt,name=clone_url,json=cloneUrl,proto3" json:"clone_url,omitempty"` + OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` + WorkspaceClass string `protobuf:"bytes,3,opt,name=workspace_class,json=workspaceClass,proto3" json:"workspace_class,omitempty"` + EditorSettings *EditorReference `protobuf:"bytes,4,opt,name=editor_settings,json=editorSettings,proto3" json:"editor_settings,omitempty"` + Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` +} + +func (x *UpdateUserRequest_WorkspaceAutostartOption) Reset() { + *x = UpdateUserRequest_WorkspaceAutostartOption{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_user_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateUserRequest_WorkspaceAutostartOption) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateUserRequest_WorkspaceAutostartOption) ProtoMessage() {} + +func (x *UpdateUserRequest_WorkspaceAutostartOption) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_user_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateUserRequest_WorkspaceAutostartOption.ProtoReflect.Descriptor instead. +func (*UpdateUserRequest_WorkspaceAutostartOption) Descriptor() ([]byte, []int) { + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 2} +} + +func (x *UpdateUserRequest_WorkspaceAutostartOption) GetCloneUrl() string { + if x != nil { + return x.CloneUrl + } + return "" +} + +func (x *UpdateUserRequest_WorkspaceAutostartOption) GetOrganizationId() string { + if x != nil { + return x.OrganizationId + } + return "" +} + +func (x *UpdateUserRequest_WorkspaceAutostartOption) GetWorkspaceClass() string { + if x != nil { + return x.WorkspaceClass + } + return "" +} + +func (x *UpdateUserRequest_WorkspaceAutostartOption) GetEditorSettings() *EditorReference { + if x != nil { + return x.EditorSettings + } + return nil +} + +func (x *UpdateUserRequest_WorkspaceAutostartOption) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +type UpdateUserRequest_WorkspaceTimeoutSettings struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Inactivity *durationpb.Duration `protobuf:"bytes,1,opt,name=inactivity,proto3,oneof" json:"inactivity,omitempty"` + DisabledDisconnected *bool `protobuf:"varint,2,opt,name=disabled_disconnected,json=disabledDisconnected,proto3,oneof" json:"disabled_disconnected,omitempty"` +} + +func (x *UpdateUserRequest_WorkspaceTimeoutSettings) Reset() { + *x = UpdateUserRequest_WorkspaceTimeoutSettings{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_user_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateUserRequest_WorkspaceTimeoutSettings) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateUserRequest_WorkspaceTimeoutSettings) ProtoMessage() {} + +func (x *UpdateUserRequest_WorkspaceTimeoutSettings) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_user_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateUserRequest_WorkspaceTimeoutSettings.ProtoReflect.Descriptor instead. +func (*UpdateUserRequest_WorkspaceTimeoutSettings) Descriptor() ([]byte, []int) { + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 3} +} + +func (x *UpdateUserRequest_WorkspaceTimeoutSettings) GetInactivity() *durationpb.Duration { + if x != nil { + return x.Inactivity + } + return nil +} + +func (x *UpdateUserRequest_WorkspaceTimeoutSettings) GetDisabledDisconnected() bool { + if x != nil && x.DisabledDisconnected != nil { + return *x.DisabledDisconnected + } + return false +} + type User_WorkspaceTimeoutSettings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -568,7 +1050,7 @@ type User_WorkspaceTimeoutSettings struct { func (x *User_WorkspaceTimeoutSettings) Reset() { *x = User_WorkspaceTimeoutSettings{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[4] + mi := &file_gitpod_v1_user_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -581,7 +1063,7 @@ func (x *User_WorkspaceTimeoutSettings) String() string { func (*User_WorkspaceTimeoutSettings) ProtoMessage() {} func (x *User_WorkspaceTimeoutSettings) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[4] + mi := &file_gitpod_v1_user_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -594,7 +1076,7 @@ func (x *User_WorkspaceTimeoutSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use User_WorkspaceTimeoutSettings.ProtoReflect.Descriptor instead. func (*User_WorkspaceTimeoutSettings) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 0} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 0} } func (x *User_WorkspaceTimeoutSettings) GetInactivity() *durationpb.Duration { @@ -627,7 +1109,7 @@ type User_EmailNotificationSettings struct { func (x *User_EmailNotificationSettings) Reset() { *x = User_EmailNotificationSettings{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[5] + mi := &file_gitpod_v1_user_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -640,7 +1122,7 @@ func (x *User_EmailNotificationSettings) String() string { func (*User_EmailNotificationSettings) ProtoMessage() {} func (x *User_EmailNotificationSettings) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[5] + mi := &file_gitpod_v1_user_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -653,7 +1135,7 @@ func (x *User_EmailNotificationSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use User_EmailNotificationSettings.ProtoReflect.Descriptor instead. func (*User_EmailNotificationSettings) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 1} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 1} } func (x *User_EmailNotificationSettings) GetAllowsChangelogMail() bool { @@ -731,7 +1213,7 @@ type User_ProfileDetails struct { func (x *User_ProfileDetails) Reset() { *x = User_ProfileDetails{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[6] + mi := &file_gitpod_v1_user_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -744,7 +1226,7 @@ func (x *User_ProfileDetails) String() string { func (*User_ProfileDetails) ProtoMessage() {} func (x *User_ProfileDetails) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[6] + mi := &file_gitpod_v1_user_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -757,7 +1239,7 @@ func (x *User_ProfileDetails) ProtoReflect() protoreflect.Message { // Deprecated: Use User_ProfileDetails.ProtoReflect.Descriptor instead. func (*User_ProfileDetails) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 2} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 2} } func (x *User_ProfileDetails) GetLastUpdatedDetailsNudge() string { @@ -854,7 +1336,7 @@ type User_WorkspaceAutostartOption struct { func (x *User_WorkspaceAutostartOption) Reset() { *x = User_WorkspaceAutostartOption{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[7] + mi := &file_gitpod_v1_user_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -867,7 +1349,7 @@ func (x *User_WorkspaceAutostartOption) String() string { func (*User_WorkspaceAutostartOption) ProtoMessage() {} func (x *User_WorkspaceAutostartOption) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[7] + mi := &file_gitpod_v1_user_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -880,7 +1362,7 @@ func (x *User_WorkspaceAutostartOption) ProtoReflect() protoreflect.Message { // Deprecated: Use User_WorkspaceAutostartOption.ProtoReflect.Descriptor instead. func (*User_WorkspaceAutostartOption) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 3} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 3} } func (x *User_WorkspaceAutostartOption) GetCloneUrl() string { @@ -934,214 +1416,365 @@ var file_gitpod_v1_user_proto_rawDesc = []byte{ 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0xd2, - 0x16, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, - 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x05, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x33, - 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x50, 0x0a, - 0x16, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 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, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x3a, 0x0a, 0x19, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x66, 0x0a, 0x1a, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x12, 0x69, 0x0a, 0x1b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x19, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x43, - 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, - 0x65, 0x70, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6f, 0x74, 0x66, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, - 0x38, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x68, 0x0a, 0x1b, 0x77, 0x6f, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0xe8, + 0x11, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x19, + 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x02, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x03, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, + 0x01, 0x01, 0x12, 0x48, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x04, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, + 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x7b, 0x0a, 0x1b, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x05, 0x52, 0x19, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x75, 0x0a, 0x1b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x12, 0x75, 0x73, 0x61, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x57, 0x0a, 0x17, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, - 0x18, 0x12, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x15, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x52, - 0x0a, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x5f, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x52, 0x6f, - 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, - 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x1a, 0x8a, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x39, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, - 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x15, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x1a, - 0xaf, 0x01, 0x0a, 0x19, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x32, 0x0a, - 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, - 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x4d, 0x61, 0x69, - 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x78, - 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x73, 0x44, 0x65, 0x76, 0x78, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x73, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x69, - 0x6c, 0x1a, 0xed, 0x03, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x5f, 0x6e, 0x75, 0x64, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4e, 0x75, 0x64, 0x67, - 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, - 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, + 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x78, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x06, 0x52, 0x18, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x1a, 0xdd, 0x05, 0x0a, 0x0e, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x40, 0x0a, + 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x5f, 0x6e, 0x75, 0x64, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4e, 0x75, 0x64, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x44, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, + 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x19, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x61, - 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, - 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x6f, - 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x6f, - 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, - 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6a, - 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x65, - 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, - 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x12, - 0x2c, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x5f, - 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x69, 0x67, - 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x12, 0x2f, 0x0a, - 0x13, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, - 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, 0x7a, - 0x65, 0x1a, 0xe6, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, - 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, - 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x43, 0x0a, - 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0xeb, 0x01, 0x0a, 0x0f, 0x55, - 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x21, - 0x0a, 0x1d, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, - 0x4c, 0x41, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, - 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x57, 0x4f, 0x52, 0x4b, - 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x01, 0x12, 0x2e, - 0x0a, 0x2a, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, - 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4c, - 0x41, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x33, - 0x0a, 0x2f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, - 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, - 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x49, 0x4e, - 0x47, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, - 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, - 0x43, 0x45, 0x5f, 0x50, 0x53, 0x49, 0x10, 0x04, 0x22, 0xd8, 0x03, 0x0a, 0x10, 0x52, 0x6f, 0x6c, - 0x65, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, - 0x1e, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, - 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x4f, 0x50, 0x53, 0x10, 0x01, - 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, - 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x45, 0x52, 0x10, 0x02, 0x12, - 0x1c, 0x0a, 0x18, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, 0x03, 0x12, 0x20, 0x0a, - 0x1c, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x45, 0x4c, 0x4f, 0x50, 0x45, 0x52, 0x10, 0x04, 0x12, - 0x26, 0x0a, 0x22, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x4f, 0x4c, 0x45, 0x5f, - 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, - 0x4d, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, - 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, - 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x55, 0x53, - 0x45, 0x52, 0x53, 0x10, 0x07, 0x12, 0x2e, 0x0a, 0x2a, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, - 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, - 0x4e, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, - 0x45, 0x4e, 0x54, 0x10, 0x08, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, + 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, + 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x72, + 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x07, 0x6a, 0x6f, 0x62, + 0x52, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x6a, 0x6f, 0x62, 0x5f, 0x72, + 0x6f, 0x6c, 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x05, 0x52, 0x0c, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x88, + 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x12, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, + 0x61, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x75, + 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, + 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, + 0x73, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x6f, 0x6e, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x26, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, + 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x5f, 0x6e, 0x75, 0x64, 0x67, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6a, + 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, + 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, + 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65, + 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x1a, 0x88, 0x02, 0x0a, 0x19, 0x45, + 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x88, 0x01, + 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x78, + 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0e, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x76, 0x78, 0x4d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, + 0x12, 0x39, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x02, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, + 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, + 0x5f, 0x64, 0x65, 0x76, 0x78, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x1a, 0xe6, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12, + 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x1a, 0xbd, + 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x69, + 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x15, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x14, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, + 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x39, 0x0a, 0x12, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x23, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, + 0x75, 0x73, 0x65, 0x72, 0x22, 0xd2, 0x16, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, + 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 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, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 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, + 0x14, 0x6c, 0x61, 0x73, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x12, 0x66, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x69, 0x0a, 0x1b, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, + 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x19, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, + 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x74, + 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x6f, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x27, 0x0a, 0x0f, + 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, + 0x68, 0x0a, 0x1b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x75, 0x74, + 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, + 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, + 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x75, 0x73, 0x61, + 0x67, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x75, 0x73, 0x61, 0x67, 0x65, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x57, 0x0a, 0x17, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, + 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x15, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, + 0x6c, 0x61, 0x67, 0x73, 0x12, 0x52, 0x0a, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x5f, 0x6f, 0x72, + 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x13, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x8a, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x12, 0x33, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x1a, 0xaf, 0x01, 0x0a, 0x19, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x6c, 0x6f, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x73, 0x5f, 0x64, 0x65, 0x76, 0x78, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x76, 0x78, 0x4d, 0x61, 0x69, + 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x1a, 0xed, 0x03, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x5f, 0x6e, 0x75, 0x64, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, + 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x4e, 0x75, 0x64, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x61, + 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x44, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6a, + 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x74, 0x68, 0x65, + 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, + 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, + 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, + 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, + 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x4f, 0x74, + 0x68, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, + 0x61, 0x6e, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0xe6, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, + 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x22, 0xeb, 0x01, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x46, 0x6c, 0x61, 0x67, 0x12, 0x21, 0x0a, 0x1d, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, + 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x55, 0x53, 0x45, 0x52, 0x5f, + 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x46, 0x55, 0x4c, + 0x4c, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, + 0x55, 0x50, 0x10, 0x01, 0x12, 0x2e, 0x0a, 0x2a, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, + 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, + 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x49, + 0x4e, 0x47, 0x10, 0x02, 0x12, 0x33, 0x0a, 0x2f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, + 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, + 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, + 0x49, 0x4d, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x55, 0x53, 0x45, + 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, + 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x53, 0x49, 0x10, 0x04, 0x22, 0xd8, + 0x03, 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, + 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x4c, 0x45, 0x5f, + 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, + 0x56, 0x4f, 0x50, 0x53, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, + 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x49, 0x45, + 0x57, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, - 0x4e, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x53, 0x10, 0x09, 0x12, 0x25, - 0x0a, 0x21, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, - 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x4a, 0x45, - 0x43, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x2c, 0x0a, 0x28, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, - 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x45, 0x57, 0x5f, - 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, - 0x52, 0x10, 0x0b, 0x22, 0xd5, 0x01, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x12, 0x28, 0x0a, 0x10, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x75, - 0x74, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, - 0x68, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, - 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x69, - 0x67, 0x6e, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 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, 0x0e, 0x6c, 0x61, 0x73, - 0x74, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x32, 0x78, 0x0a, 0x0b, 0x55, - 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x69, 0x0a, 0x14, 0x47, 0x65, + 0x4e, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, + 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x45, 0x4c, 0x4f, + 0x50, 0x45, 0x52, 0x10, 0x04, 0x12, 0x26, 0x0a, 0x22, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, + 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, + 0x53, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x05, 0x12, 0x28, 0x0a, + 0x24, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x4c, 0x45, 0x5f, + 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, + 0x4d, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x07, 0x12, 0x2e, 0x0a, 0x2a, 0x52, + 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, + 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x08, 0x12, 0x27, 0x0a, 0x23, 0x52, + 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, + 0x45, 0x53, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, + 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, + 0x5f, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x2c, 0x0a, 0x28, 0x52, + 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, + 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x0b, 0x22, 0xd5, 0x01, 0x0a, 0x08, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x17, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, + 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, + 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x06, 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, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x54, 0x69, 0x6d, + 0x65, 0x32, 0xc5, 0x01, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x69, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, - 0x65, 0x72, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x37, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, + 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, + 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1157,44 +1790,60 @@ func file_gitpod_v1_user_proto_rawDescGZIP() []byte { } var file_gitpod_v1_user_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_gitpod_v1_user_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_gitpod_v1_user_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_gitpod_v1_user_proto_goTypes = []interface{}{ - (User_UserFeatureFlag)(0), // 0: gitpod.v1.User.UserFeatureFlag - (User_RoleOrPermission)(0), // 1: gitpod.v1.User.RoleOrPermission - (*GetAuthenticatedUserRequest)(nil), // 2: gitpod.v1.GetAuthenticatedUserRequest - (*GetAuthenticatedUserResponse)(nil), // 3: gitpod.v1.GetAuthenticatedUserResponse - (*User)(nil), // 4: gitpod.v1.User - (*Identity)(nil), // 5: gitpod.v1.Identity - (*User_WorkspaceTimeoutSettings)(nil), // 6: gitpod.v1.User.WorkspaceTimeoutSettings - (*User_EmailNotificationSettings)(nil), // 7: gitpod.v1.User.EmailNotificationSettings - (*User_ProfileDetails)(nil), // 8: gitpod.v1.User.ProfileDetails - (*User_WorkspaceAutostartOption)(nil), // 9: gitpod.v1.User.WorkspaceAutostartOption - (*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp - (*EditorReference)(nil), // 11: gitpod.v1.EditorReference - (*durationpb.Duration)(nil), // 12: google.protobuf.Duration + (User_UserFeatureFlag)(0), // 0: gitpod.v1.User.UserFeatureFlag + (User_RoleOrPermission)(0), // 1: gitpod.v1.User.RoleOrPermission + (*GetAuthenticatedUserRequest)(nil), // 2: gitpod.v1.GetAuthenticatedUserRequest + (*GetAuthenticatedUserResponse)(nil), // 3: gitpod.v1.GetAuthenticatedUserResponse + (*UpdateUserRequest)(nil), // 4: gitpod.v1.UpdateUserRequest + (*UpdateUserResponse)(nil), // 5: gitpod.v1.UpdateUserResponse + (*User)(nil), // 6: gitpod.v1.User + (*Identity)(nil), // 7: gitpod.v1.Identity + (*UpdateUserRequest_ProfileDetails)(nil), // 8: gitpod.v1.UpdateUserRequest.ProfileDetails + (*UpdateUserRequest_EmailNotificationSettings)(nil), // 9: gitpod.v1.UpdateUserRequest.EmailNotificationSettings + (*UpdateUserRequest_WorkspaceAutostartOption)(nil), // 10: gitpod.v1.UpdateUserRequest.WorkspaceAutostartOption + (*UpdateUserRequest_WorkspaceTimeoutSettings)(nil), // 11: gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings + (*User_WorkspaceTimeoutSettings)(nil), // 12: gitpod.v1.User.WorkspaceTimeoutSettings + (*User_EmailNotificationSettings)(nil), // 13: gitpod.v1.User.EmailNotificationSettings + (*User_ProfileDetails)(nil), // 14: gitpod.v1.User.ProfileDetails + (*User_WorkspaceAutostartOption)(nil), // 15: gitpod.v1.User.WorkspaceAutostartOption + (*EditorReference)(nil), // 16: gitpod.v1.EditorReference + (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 18: google.protobuf.Duration } var file_gitpod_v1_user_proto_depIdxs = []int32{ - 4, // 0: gitpod.v1.GetAuthenticatedUserResponse.user:type_name -> gitpod.v1.User - 10, // 1: gitpod.v1.User.created_at:type_name -> google.protobuf.Timestamp - 5, // 2: gitpod.v1.User.identities:type_name -> gitpod.v1.Identity - 10, // 3: gitpod.v1.User.last_verification_time:type_name -> google.protobuf.Timestamp - 6, // 4: gitpod.v1.User.workspace_timeout_settings:type_name -> gitpod.v1.User.WorkspaceTimeoutSettings - 7, // 5: gitpod.v1.User.email_notification_settings:type_name -> gitpod.v1.User.EmailNotificationSettings - 11, // 6: gitpod.v1.User.editor_settings:type_name -> gitpod.v1.EditorReference - 8, // 7: gitpod.v1.User.profile:type_name -> gitpod.v1.User.ProfileDetails - 9, // 8: gitpod.v1.User.workspace_autostart_options:type_name -> gitpod.v1.User.WorkspaceAutostartOption - 0, // 9: gitpod.v1.User.workspace_feature_flags:type_name -> gitpod.v1.User.UserFeatureFlag - 1, // 10: gitpod.v1.User.roles_or_permissions:type_name -> gitpod.v1.User.RoleOrPermission - 10, // 11: gitpod.v1.Identity.last_signin_time:type_name -> google.protobuf.Timestamp - 12, // 12: gitpod.v1.User.WorkspaceTimeoutSettings.inactivity:type_name -> google.protobuf.Duration - 11, // 13: gitpod.v1.User.WorkspaceAutostartOption.editor_settings:type_name -> gitpod.v1.EditorReference - 2, // 14: gitpod.v1.UserService.GetAuthenticatedUser:input_type -> gitpod.v1.GetAuthenticatedUserRequest - 3, // 15: gitpod.v1.UserService.GetAuthenticatedUser:output_type -> gitpod.v1.GetAuthenticatedUserResponse - 15, // [15:16] is the sub-list for method output_type - 14, // [14:15] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 6, // 0: gitpod.v1.GetAuthenticatedUserResponse.user:type_name -> gitpod.v1.User + 8, // 1: gitpod.v1.UpdateUserRequest.profile:type_name -> gitpod.v1.UpdateUserRequest.ProfileDetails + 16, // 2: gitpod.v1.UpdateUserRequest.editor_settings:type_name -> gitpod.v1.EditorReference + 9, // 3: gitpod.v1.UpdateUserRequest.email_notification_settings:type_name -> gitpod.v1.UpdateUserRequest.EmailNotificationSettings + 10, // 4: gitpod.v1.UpdateUserRequest.workspace_autostart_options:type_name -> gitpod.v1.UpdateUserRequest.WorkspaceAutostartOption + 11, // 5: gitpod.v1.UpdateUserRequest.workspace_timeout_settings:type_name -> gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings + 6, // 6: gitpod.v1.UpdateUserResponse.user:type_name -> gitpod.v1.User + 17, // 7: gitpod.v1.User.created_at:type_name -> google.protobuf.Timestamp + 7, // 8: gitpod.v1.User.identities:type_name -> gitpod.v1.Identity + 17, // 9: gitpod.v1.User.last_verification_time:type_name -> google.protobuf.Timestamp + 12, // 10: gitpod.v1.User.workspace_timeout_settings:type_name -> gitpod.v1.User.WorkspaceTimeoutSettings + 13, // 11: gitpod.v1.User.email_notification_settings:type_name -> gitpod.v1.User.EmailNotificationSettings + 16, // 12: gitpod.v1.User.editor_settings:type_name -> gitpod.v1.EditorReference + 14, // 13: gitpod.v1.User.profile:type_name -> gitpod.v1.User.ProfileDetails + 15, // 14: gitpod.v1.User.workspace_autostart_options:type_name -> gitpod.v1.User.WorkspaceAutostartOption + 0, // 15: gitpod.v1.User.workspace_feature_flags:type_name -> gitpod.v1.User.UserFeatureFlag + 1, // 16: gitpod.v1.User.roles_or_permissions:type_name -> gitpod.v1.User.RoleOrPermission + 17, // 17: gitpod.v1.Identity.last_signin_time:type_name -> google.protobuf.Timestamp + 16, // 18: gitpod.v1.UpdateUserRequest.WorkspaceAutostartOption.editor_settings:type_name -> gitpod.v1.EditorReference + 18, // 19: gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings.inactivity:type_name -> google.protobuf.Duration + 18, // 20: gitpod.v1.User.WorkspaceTimeoutSettings.inactivity:type_name -> google.protobuf.Duration + 16, // 21: gitpod.v1.User.WorkspaceAutostartOption.editor_settings:type_name -> gitpod.v1.EditorReference + 2, // 22: gitpod.v1.UserService.GetAuthenticatedUser:input_type -> gitpod.v1.GetAuthenticatedUserRequest + 4, // 23: gitpod.v1.UserService.UpdateUser:input_type -> gitpod.v1.UpdateUserRequest + 3, // 24: gitpod.v1.UserService.GetAuthenticatedUser:output_type -> gitpod.v1.GetAuthenticatedUserResponse + 5, // 25: gitpod.v1.UserService.UpdateUser:output_type -> gitpod.v1.UpdateUserResponse + 24, // [24:26] is the sub-list for method output_type + 22, // [22:24] is the sub-list for method input_type + 22, // [22:22] is the sub-list for extension type_name + 22, // [22:22] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name } func init() { file_gitpod_v1_user_proto_init() } @@ -1229,7 +1878,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User); i { + switch v := v.(*UpdateUserRequest); i { case 0: return &v.state case 1: @@ -1241,7 +1890,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Identity); i { + switch v := v.(*UpdateUserResponse); i { case 0: return &v.state case 1: @@ -1253,7 +1902,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User_WorkspaceTimeoutSettings); i { + switch v := v.(*User); i { case 0: return &v.state case 1: @@ -1265,7 +1914,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User_EmailNotificationSettings); i { + switch v := v.(*Identity); i { case 0: return &v.state case 1: @@ -1277,7 +1926,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User_ProfileDetails); i { + switch v := v.(*UpdateUserRequest_ProfileDetails); i { case 0: return &v.state case 1: @@ -1289,6 +1938,78 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateUserRequest_EmailNotificationSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_v1_user_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateUserRequest_WorkspaceAutostartOption); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_v1_user_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateUserRequest_WorkspaceTimeoutSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_v1_user_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*User_WorkspaceTimeoutSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_v1_user_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*User_EmailNotificationSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_v1_user_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*User_ProfileDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_v1_user_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*User_WorkspaceAutostartOption); i { case 0: return &v.state @@ -1301,13 +2022,17 @@ func file_gitpod_v1_user_proto_init() { } } } + file_gitpod_v1_user_proto_msgTypes[2].OneofWrappers = []interface{}{} + file_gitpod_v1_user_proto_msgTypes[6].OneofWrappers = []interface{}{} + file_gitpod_v1_user_proto_msgTypes[7].OneofWrappers = []interface{}{} + file_gitpod_v1_user_proto_msgTypes[9].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gitpod_v1_user_proto_rawDesc, NumEnums: 2, - NumMessages: 8, + NumMessages: 14, NumExtensions: 0, NumServices: 1, }, diff --git a/components/public-api/go/v1/user_grpc.pb.go b/components/public-api/go/v1/user_grpc.pb.go index 52470ce5bad97b..6dd8c87a7e82d8 100644 --- a/components/public-api/go/v1/user_grpc.pb.go +++ b/components/public-api/go/v1/user_grpc.pb.go @@ -28,6 +28,8 @@ const _ = grpc.SupportPackageIsVersion7 type UserServiceClient interface { // GetAuthenticatedUser allows to retrieve the current user. GetAuthenticatedUser(ctx context.Context, in *GetAuthenticatedUserRequest, opts ...grpc.CallOption) (*GetAuthenticatedUserResponse, error) + // UpdateUser updates the properties of a user. + UpdateUser(ctx context.Context, in *UpdateUserRequest, opts ...grpc.CallOption) (*UpdateUserResponse, error) } type userServiceClient struct { @@ -47,12 +49,23 @@ func (c *userServiceClient) GetAuthenticatedUser(ctx context.Context, in *GetAut return out, nil } +func (c *userServiceClient) UpdateUser(ctx context.Context, in *UpdateUserRequest, opts ...grpc.CallOption) (*UpdateUserResponse, error) { + out := new(UpdateUserResponse) + err := c.cc.Invoke(ctx, "/gitpod.v1.UserService/UpdateUser", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // UserServiceServer is the server API for UserService service. // All implementations must embed UnimplementedUserServiceServer // for forward compatibility type UserServiceServer interface { // GetAuthenticatedUser allows to retrieve the current user. GetAuthenticatedUser(context.Context, *GetAuthenticatedUserRequest) (*GetAuthenticatedUserResponse, error) + // UpdateUser updates the properties of a user. + UpdateUser(context.Context, *UpdateUserRequest) (*UpdateUserResponse, error) mustEmbedUnimplementedUserServiceServer() } @@ -63,6 +76,9 @@ type UnimplementedUserServiceServer struct { func (UnimplementedUserServiceServer) GetAuthenticatedUser(context.Context, *GetAuthenticatedUserRequest) (*GetAuthenticatedUserResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAuthenticatedUser not implemented") } +func (UnimplementedUserServiceServer) UpdateUser(context.Context, *UpdateUserRequest) (*UpdateUserResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateUser not implemented") +} func (UnimplementedUserServiceServer) mustEmbedUnimplementedUserServiceServer() {} // UnsafeUserServiceServer may be embedded to opt out of forward compatibility for this service. @@ -94,6 +110,24 @@ func _UserService_GetAuthenticatedUser_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } +func _UserService_UpdateUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateUserRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserServiceServer).UpdateUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/gitpod.v1.UserService/UpdateUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserServiceServer).UpdateUser(ctx, req.(*UpdateUserRequest)) + } + return interceptor(ctx, in, info, handler) +} + // UserService_ServiceDesc is the grpc.ServiceDesc for UserService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -105,6 +139,10 @@ var UserService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetAuthenticatedUser", Handler: _UserService_GetAuthenticatedUser_Handler, }, + { + MethodName: "UpdateUser", + Handler: _UserService_UpdateUser_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "gitpod/v1/user.proto", diff --git a/components/public-api/go/v1/v1connect/user.connect.go b/components/public-api/go/v1/v1connect/user.connect.go index 30fda0810ed8e7..54da9b79542ebc 100644 --- a/components/public-api/go/v1/v1connect/user.connect.go +++ b/components/public-api/go/v1/v1connect/user.connect.go @@ -33,6 +33,8 @@ const ( type UserServiceClient interface { // GetAuthenticatedUser allows to retrieve the current user. GetAuthenticatedUser(context.Context, *connect_go.Request[v1.GetAuthenticatedUserRequest]) (*connect_go.Response[v1.GetAuthenticatedUserResponse], error) + // UpdateUser updates the properties of a user. + UpdateUser(context.Context, *connect_go.Request[v1.UpdateUserRequest]) (*connect_go.Response[v1.UpdateUserResponse], error) } // NewUserServiceClient constructs a client for the gitpod.v1.UserService service. By default, it @@ -50,12 +52,18 @@ func NewUserServiceClient(httpClient connect_go.HTTPClient, baseURL string, opts baseURL+"/gitpod.v1.UserService/GetAuthenticatedUser", opts..., ), + updateUser: connect_go.NewClient[v1.UpdateUserRequest, v1.UpdateUserResponse]( + httpClient, + baseURL+"/gitpod.v1.UserService/UpdateUser", + opts..., + ), } } // userServiceClient implements UserServiceClient. type userServiceClient struct { getAuthenticatedUser *connect_go.Client[v1.GetAuthenticatedUserRequest, v1.GetAuthenticatedUserResponse] + updateUser *connect_go.Client[v1.UpdateUserRequest, v1.UpdateUserResponse] } // GetAuthenticatedUser calls gitpod.v1.UserService.GetAuthenticatedUser. @@ -63,10 +71,17 @@ func (c *userServiceClient) GetAuthenticatedUser(ctx context.Context, req *conne return c.getAuthenticatedUser.CallUnary(ctx, req) } +// UpdateUser calls gitpod.v1.UserService.UpdateUser. +func (c *userServiceClient) UpdateUser(ctx context.Context, req *connect_go.Request[v1.UpdateUserRequest]) (*connect_go.Response[v1.UpdateUserResponse], error) { + return c.updateUser.CallUnary(ctx, req) +} + // UserServiceHandler is an implementation of the gitpod.v1.UserService service. type UserServiceHandler interface { // GetAuthenticatedUser allows to retrieve the current user. GetAuthenticatedUser(context.Context, *connect_go.Request[v1.GetAuthenticatedUserRequest]) (*connect_go.Response[v1.GetAuthenticatedUserResponse], error) + // UpdateUser updates the properties of a user. + UpdateUser(context.Context, *connect_go.Request[v1.UpdateUserRequest]) (*connect_go.Response[v1.UpdateUserResponse], error) } // NewUserServiceHandler builds an HTTP handler from the service implementation. It returns the path @@ -81,6 +96,11 @@ func NewUserServiceHandler(svc UserServiceHandler, opts ...connect_go.HandlerOpt svc.GetAuthenticatedUser, opts..., )) + mux.Handle("/gitpod.v1.UserService/UpdateUser", connect_go.NewUnaryHandler( + "/gitpod.v1.UserService/UpdateUser", + svc.UpdateUser, + opts..., + )) return "/gitpod.v1.UserService/", mux } @@ -90,3 +110,7 @@ type UnimplementedUserServiceHandler struct{} func (UnimplementedUserServiceHandler) GetAuthenticatedUser(context.Context, *connect_go.Request[v1.GetAuthenticatedUserRequest]) (*connect_go.Response[v1.GetAuthenticatedUserResponse], error) { return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.UserService.GetAuthenticatedUser is not implemented")) } + +func (UnimplementedUserServiceHandler) UpdateUser(context.Context, *connect_go.Request[v1.UpdateUserRequest]) (*connect_go.Response[v1.UpdateUserResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.UserService.UpdateUser is not implemented")) +} diff --git a/components/public-api/go/v1/v1connect/user.proxy.connect.go b/components/public-api/go/v1/v1connect/user.proxy.connect.go index 9153e1a70b9105..38812052a9b781 100644 --- a/components/public-api/go/v1/v1connect/user.proxy.connect.go +++ b/components/public-api/go/v1/v1connect/user.proxy.connect.go @@ -28,3 +28,13 @@ func (s *ProxyUserServiceHandler) GetAuthenticatedUser(ctx context.Context, req return connect_go.NewResponse(resp), nil } + +func (s *ProxyUserServiceHandler) UpdateUser(ctx context.Context, req *connect_go.Request[v1.UpdateUserRequest]) (*connect_go.Response[v1.UpdateUserResponse], error) { + resp, err := s.Client.UpdateUser(ctx, req.Msg) + if err != nil { + // TODO(milan): Convert to correct status code + return nil, err + } + + return connect_go.NewResponse(resp), nil +} diff --git a/components/public-api/typescript/src/gitpod/v1/user_connect.ts b/components/public-api/typescript/src/gitpod/v1/user_connect.ts index 4a0666dd154ed7..21b13fa3f35ea6 100644 --- a/components/public-api/typescript/src/gitpod/v1/user_connect.ts +++ b/components/public-api/typescript/src/gitpod/v1/user_connect.ts @@ -9,7 +9,7 @@ /* eslint-disable */ // @ts-nocheck -import { GetAuthenticatedUserRequest, GetAuthenticatedUserResponse } from "./user_pb.js"; +import { GetAuthenticatedUserRequest, GetAuthenticatedUserResponse, UpdateUserRequest, UpdateUserResponse } from "./user_pb.js"; import { MethodKind } from "@bufbuild/protobuf"; /** @@ -29,5 +29,16 @@ export const UserService = { O: GetAuthenticatedUserResponse, kind: MethodKind.Unary, }, + /** + * UpdateUser updates the properties of a user. + * + * @generated from rpc gitpod.v1.UserService.UpdateUser + */ + updateUser: { + name: "UpdateUser", + I: UpdateUserRequest, + O: UpdateUserResponse, + kind: MethodKind.Unary, + }, } } as const; diff --git a/components/public-api/typescript/src/gitpod/v1/user_pb.ts b/components/public-api/typescript/src/gitpod/v1/user_pb.ts index 34028c5c791690..f8a481ef5283a5 100644 --- a/components/public-api/typescript/src/gitpod/v1/user_pb.ts +++ b/components/public-api/typescript/src/gitpod/v1/user_pb.ts @@ -81,6 +81,378 @@ export class GetAuthenticatedUserResponse extends Message { + /** + * @generated from field: string user_id = 1; + */ + userId = ""; + + /** + * @generated from field: optional string name = 2; + */ + name?: string; + + /** + * @generated from field: optional string accepted_privacy_policy_date = 3; + */ + acceptedPrivacyPolicyDate?: string; + + /** + * @generated from field: optional gitpod.v1.UpdateUserRequest.ProfileDetails profile = 4; + */ + profile?: UpdateUserRequest_ProfileDetails; + + /** + * @generated from field: optional string email_address = 5; + */ + emailAddress?: string; + + /** + * @generated from field: optional gitpod.v1.EditorReference editor_settings = 6; + */ + editorSettings?: EditorReference; + + /** + * @generated from field: optional gitpod.v1.UpdateUserRequest.EmailNotificationSettings email_notification_settings = 7; + */ + emailNotificationSettings?: UpdateUserRequest_EmailNotificationSettings; + + /** + * @generated from field: repeated gitpod.v1.UpdateUserRequest.WorkspaceAutostartOption workspace_autostart_options = 8; + */ + workspaceAutostartOptions: UpdateUserRequest_WorkspaceAutostartOption[] = []; + + /** + * @generated from field: optional gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings workspace_timeout_settings = 9; + */ + workspaceTimeoutSettings?: UpdateUserRequest_WorkspaceTimeoutSettings; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "gitpod.v1.UpdateUserRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "user_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 3, name: "accepted_privacy_policy_date", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 4, name: "profile", kind: "message", T: UpdateUserRequest_ProfileDetails, opt: true }, + { no: 5, name: "email_address", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 6, name: "editor_settings", kind: "message", T: EditorReference, opt: true }, + { no: 7, name: "email_notification_settings", kind: "message", T: UpdateUserRequest_EmailNotificationSettings, opt: true }, + { no: 8, name: "workspace_autostart_options", kind: "message", T: UpdateUserRequest_WorkspaceAutostartOption, repeated: true }, + { no: 9, name: "workspace_timeout_settings", kind: "message", T: UpdateUserRequest_WorkspaceTimeoutSettings, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateUserRequest { + return new UpdateUserRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateUserRequest { + return new UpdateUserRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateUserRequest { + return new UpdateUserRequest().fromJsonString(jsonString, options); + } + + static equals(a: UpdateUserRequest | PlainMessage | undefined, b: UpdateUserRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateUserRequest, a, b); + } +} + +/** + * @generated from message gitpod.v1.UpdateUserRequest.ProfileDetails + */ +export class UpdateUserRequest_ProfileDetails extends Message { + /** + * @generated from field: optional string last_updated_details_nudge = 1; + */ + lastUpdatedDetailsNudge?: string; + + /** + * @generated from field: optional string accepted_privacy_policy_date = 2; + */ + acceptedPrivacyPolicyDate?: string; + + /** + * @generated from field: optional string company_name = 3; + */ + companyName?: string; + + /** + * @generated from field: optional string email_address = 4; + */ + emailAddress?: string; + + /** + * @generated from field: optional string job_role = 5; + */ + jobRole?: string; + + /** + * @generated from field: optional string job_role_other = 6; + */ + jobRoleOther?: string; + + /** + * @generated from field: repeated string exploration_reasons = 7; + */ + explorationReasons: string[] = []; + + /** + * @generated from field: repeated string signup_goals = 8; + */ + signupGoals: string[] = []; + + /** + * @generated from field: optional string signup_goals_other = 10; + */ + signupGoalsOther?: string; + + /** + * @generated from field: optional string onboarded_timestamp = 11; + */ + onboardedTimestamp?: string; + + /** + * @generated from field: optional string company_size = 12; + */ + companySize?: string; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "gitpod.v1.UpdateUserRequest.ProfileDetails"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "last_updated_details_nudge", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 2, name: "accepted_privacy_policy_date", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 3, name: "company_name", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 4, name: "email_address", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 5, name: "job_role", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 6, name: "job_role_other", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 7, name: "exploration_reasons", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 8, name: "signup_goals", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 10, name: "signup_goals_other", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 11, name: "onboarded_timestamp", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 12, name: "company_size", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateUserRequest_ProfileDetails { + return new UpdateUserRequest_ProfileDetails().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateUserRequest_ProfileDetails { + return new UpdateUserRequest_ProfileDetails().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateUserRequest_ProfileDetails { + return new UpdateUserRequest_ProfileDetails().fromJsonString(jsonString, options); + } + + static equals(a: UpdateUserRequest_ProfileDetails | PlainMessage | undefined, b: UpdateUserRequest_ProfileDetails | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateUserRequest_ProfileDetails, a, b); + } +} + +/** + * @generated from message gitpod.v1.UpdateUserRequest.EmailNotificationSettings + */ +export class UpdateUserRequest_EmailNotificationSettings extends Message { + /** + * @generated from field: optional bool allows_changelog_mail = 1; + */ + allowsChangelogMail?: boolean; + + /** + * @generated from field: optional bool allows_devx_mail = 2; + */ + allowsDevxMail?: boolean; + + /** + * @generated from field: optional bool allows_onboarding_mail = 3; + */ + allowsOnboardingMail?: boolean; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "gitpod.v1.UpdateUserRequest.EmailNotificationSettings"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "allows_changelog_mail", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, + { no: 2, name: "allows_devx_mail", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, + { no: 3, name: "allows_onboarding_mail", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateUserRequest_EmailNotificationSettings { + return new UpdateUserRequest_EmailNotificationSettings().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateUserRequest_EmailNotificationSettings { + return new UpdateUserRequest_EmailNotificationSettings().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateUserRequest_EmailNotificationSettings { + return new UpdateUserRequest_EmailNotificationSettings().fromJsonString(jsonString, options); + } + + static equals(a: UpdateUserRequest_EmailNotificationSettings | PlainMessage | undefined, b: UpdateUserRequest_EmailNotificationSettings | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateUserRequest_EmailNotificationSettings, a, b); + } +} + +/** + * @generated from message gitpod.v1.UpdateUserRequest.WorkspaceAutostartOption + */ +export class UpdateUserRequest_WorkspaceAutostartOption extends Message { + /** + * @generated from field: string clone_url = 1; + */ + cloneUrl = ""; + + /** + * @generated from field: string organization_id = 2; + */ + organizationId = ""; + + /** + * @generated from field: string workspace_class = 3; + */ + workspaceClass = ""; + + /** + * @generated from field: gitpod.v1.EditorReference editor_settings = 4; + */ + editorSettings?: EditorReference; + + /** + * @generated from field: string region = 5; + */ + region = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "gitpod.v1.UpdateUserRequest.WorkspaceAutostartOption"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "clone_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "workspace_class", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "editor_settings", kind: "message", T: EditorReference }, + { no: 5, name: "region", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateUserRequest_WorkspaceAutostartOption { + return new UpdateUserRequest_WorkspaceAutostartOption().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateUserRequest_WorkspaceAutostartOption { + return new UpdateUserRequest_WorkspaceAutostartOption().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateUserRequest_WorkspaceAutostartOption { + return new UpdateUserRequest_WorkspaceAutostartOption().fromJsonString(jsonString, options); + } + + static equals(a: UpdateUserRequest_WorkspaceAutostartOption | PlainMessage | undefined, b: UpdateUserRequest_WorkspaceAutostartOption | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateUserRequest_WorkspaceAutostartOption, a, b); + } +} + +/** + * @generated from message gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings + */ +export class UpdateUserRequest_WorkspaceTimeoutSettings extends Message { + /** + * @generated from field: optional google.protobuf.Duration inactivity = 1; + */ + inactivity?: Duration; + + /** + * @generated from field: optional bool disabled_disconnected = 2; + */ + disabledDisconnected?: boolean; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "inactivity", kind: "message", T: Duration, opt: true }, + { no: 2, name: "disabled_disconnected", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateUserRequest_WorkspaceTimeoutSettings { + return new UpdateUserRequest_WorkspaceTimeoutSettings().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateUserRequest_WorkspaceTimeoutSettings { + return new UpdateUserRequest_WorkspaceTimeoutSettings().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateUserRequest_WorkspaceTimeoutSettings { + return new UpdateUserRequest_WorkspaceTimeoutSettings().fromJsonString(jsonString, options); + } + + static equals(a: UpdateUserRequest_WorkspaceTimeoutSettings | PlainMessage | undefined, b: UpdateUserRequest_WorkspaceTimeoutSettings | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateUserRequest_WorkspaceTimeoutSettings, a, b); + } +} + +/** + * @generated from message gitpod.v1.UpdateUserResponse + */ +export class UpdateUserResponse extends Message { + /** + * @generated from field: gitpod.v1.User user = 1; + */ + user?: User; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "gitpod.v1.UpdateUserResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "user", kind: "message", T: User }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateUserResponse { + return new UpdateUserResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateUserResponse { + return new UpdateUserResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateUserResponse { + return new UpdateUserResponse().fromJsonString(jsonString, options); + } + + static equals(a: UpdateUserResponse | PlainMessage | undefined, b: UpdateUserResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateUserResponse, a, b); + } +} + /** * @generated from message gitpod.v1.User */ @@ -102,7 +474,7 @@ export class User extends Message { organizationId = ""; /** - * name is the username + * name is the full name of the user * * @generated from field: string name = 3; */ From 1a0632b2bf0869681c047f114f967b61b6cd3037 Mon Sep 17 00:00:00 2001 From: Alex Tugarev Date: Wed, 29 Nov 2023 12:30:47 +0000 Subject: [PATCH 2/2] extract SetWorkspaceAutoStartOptions --- components/public-api/gitpod/v1/user.proto | 27 +- components/public-api/go/v1/user.pb.go | 1192 +++++++++-------- components/public-api/go/v1/user_grpc.pb.go | 40 + .../go/v1/v1connect/user.connect.go | 30 +- .../go/v1/v1connect/user.proxy.connect.go | 10 + .../typescript/src/gitpod/v1/user_connect.ts | 14 +- .../typescript/src/gitpod/v1/user_pb.ts | 206 ++- 7 files changed, 909 insertions(+), 610 deletions(-) diff --git a/components/public-api/gitpod/v1/user.proto b/components/public-api/gitpod/v1/user.proto index 81e4a71ccf7686..7019946af8052b 100644 --- a/components/public-api/gitpod/v1/user.proto +++ b/components/public-api/gitpod/v1/user.proto @@ -14,6 +14,10 @@ service UserService { // UpdateUser updates the properties of a user. rpc UpdateUser(UpdateUserRequest) returns (UpdateUserResponse) {} + + // SetWorkspaceAutoStartOptions updates the auto start options for the Gitpod Dashboard. + // +internal - only used by the Gitpod Dashboard. + rpc SetWorkspaceAutoStartOptions(SetWorkspaceAutoStartOptionsRequest) returns (SetWorkspaceAutoStartOptionsResponse) {} } message GetAuthenticatedUserRequest {} @@ -21,6 +25,19 @@ message GetAuthenticatedUserResponse { User user = 1; } +message SetWorkspaceAutoStartOptionsRequest { + string user_id = 1; + repeated WorkspaceAutostartOption workspace_autostart_options = 2; + message WorkspaceAutostartOption { + string clone_url = 1; + string organization_id = 2; + optional string workspace_class = 3; + optional EditorReference editor_settings = 4; + optional string region = 5; + } +} +message SetWorkspaceAutoStartOptionsResponse {} + message UpdateUserRequest { string user_id = 1; optional string name = 2; @@ -47,15 +64,7 @@ message UpdateUserRequest { optional bool allows_devx_mail = 2; optional bool allows_onboarding_mail = 3; } - repeated WorkspaceAutostartOption workspace_autostart_options = 8; - message WorkspaceAutostartOption { - string clone_url = 1; - string organization_id = 2; - string workspace_class = 3; - EditorReference editor_settings = 4; - string region = 5; - } - optional WorkspaceTimeoutSettings workspace_timeout_settings = 9; + optional WorkspaceTimeoutSettings workspace_timeout_settings = 8; message WorkspaceTimeoutSettings { optional google.protobuf.Duration inactivity = 1; optional bool disabled_disconnected = 2; diff --git a/components/public-api/go/v1/user.pb.go b/components/public-api/go/v1/user.pb.go index df13d6bef44ef4..c2a065a44be894 100644 --- a/components/public-api/go/v1/user.pb.go +++ b/components/public-api/go/v1/user.pb.go @@ -78,7 +78,7 @@ func (x User_UserFeatureFlag) Number() protoreflect.EnumNumber { // Deprecated: Use User_UserFeatureFlag.Descriptor instead. func (User_UserFeatureFlag) EnumDescriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 0} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{6, 0} } type User_RoleOrPermission int32 @@ -154,7 +154,7 @@ func (x User_RoleOrPermission) Number() protoreflect.EnumNumber { // Deprecated: Use User_RoleOrPermission.Descriptor instead. func (User_RoleOrPermission) EnumDescriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 1} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{6, 1} } type GetAuthenticatedUserRequest struct { @@ -242,26 +242,118 @@ func (x *GetAuthenticatedUserResponse) GetUser() *User { return nil } +type SetWorkspaceAutoStartOptionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + WorkspaceAutostartOptions []*SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption `protobuf:"bytes,2,rep,name=workspace_autostart_options,json=workspaceAutostartOptions,proto3" json:"workspace_autostart_options,omitempty"` +} + +func (x *SetWorkspaceAutoStartOptionsRequest) Reset() { + *x = SetWorkspaceAutoStartOptionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_user_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetWorkspaceAutoStartOptionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetWorkspaceAutoStartOptionsRequest) ProtoMessage() {} + +func (x *SetWorkspaceAutoStartOptionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_user_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetWorkspaceAutoStartOptionsRequest.ProtoReflect.Descriptor instead. +func (*SetWorkspaceAutoStartOptionsRequest) Descriptor() ([]byte, []int) { + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2} +} + +func (x *SetWorkspaceAutoStartOptionsRequest) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *SetWorkspaceAutoStartOptionsRequest) GetWorkspaceAutostartOptions() []*SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption { + if x != nil { + return x.WorkspaceAutostartOptions + } + return nil +} + +type SetWorkspaceAutoStartOptionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SetWorkspaceAutoStartOptionsResponse) Reset() { + *x = SetWorkspaceAutoStartOptionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_user_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetWorkspaceAutoStartOptionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetWorkspaceAutoStartOptionsResponse) ProtoMessage() {} + +func (x *SetWorkspaceAutoStartOptionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_user_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetWorkspaceAutoStartOptionsResponse.ProtoReflect.Descriptor instead. +func (*SetWorkspaceAutoStartOptionsResponse) Descriptor() ([]byte, []int) { + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{3} +} + type UpdateUserRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` - AcceptedPrivacyPolicyDate *string `protobuf:"bytes,3,opt,name=accepted_privacy_policy_date,json=acceptedPrivacyPolicyDate,proto3,oneof" json:"accepted_privacy_policy_date,omitempty"` - Profile *UpdateUserRequest_ProfileDetails `protobuf:"bytes,4,opt,name=profile,proto3,oneof" json:"profile,omitempty"` - EmailAddress *string `protobuf:"bytes,5,opt,name=email_address,json=emailAddress,proto3,oneof" json:"email_address,omitempty"` - EditorSettings *EditorReference `protobuf:"bytes,6,opt,name=editor_settings,json=editorSettings,proto3,oneof" json:"editor_settings,omitempty"` - EmailNotificationSettings *UpdateUserRequest_EmailNotificationSettings `protobuf:"bytes,7,opt,name=email_notification_settings,json=emailNotificationSettings,proto3,oneof" json:"email_notification_settings,omitempty"` - WorkspaceAutostartOptions []*UpdateUserRequest_WorkspaceAutostartOption `protobuf:"bytes,8,rep,name=workspace_autostart_options,json=workspaceAutostartOptions,proto3" json:"workspace_autostart_options,omitempty"` - WorkspaceTimeoutSettings *UpdateUserRequest_WorkspaceTimeoutSettings `protobuf:"bytes,9,opt,name=workspace_timeout_settings,json=workspaceTimeoutSettings,proto3,oneof" json:"workspace_timeout_settings,omitempty"` + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` + AcceptedPrivacyPolicyDate *string `protobuf:"bytes,3,opt,name=accepted_privacy_policy_date,json=acceptedPrivacyPolicyDate,proto3,oneof" json:"accepted_privacy_policy_date,omitempty"` + Profile *UpdateUserRequest_ProfileDetails `protobuf:"bytes,4,opt,name=profile,proto3,oneof" json:"profile,omitempty"` + EmailAddress *string `protobuf:"bytes,5,opt,name=email_address,json=emailAddress,proto3,oneof" json:"email_address,omitempty"` + EditorSettings *EditorReference `protobuf:"bytes,6,opt,name=editor_settings,json=editorSettings,proto3,oneof" json:"editor_settings,omitempty"` + EmailNotificationSettings *UpdateUserRequest_EmailNotificationSettings `protobuf:"bytes,7,opt,name=email_notification_settings,json=emailNotificationSettings,proto3,oneof" json:"email_notification_settings,omitempty"` + WorkspaceTimeoutSettings *UpdateUserRequest_WorkspaceTimeoutSettings `protobuf:"bytes,8,opt,name=workspace_timeout_settings,json=workspaceTimeoutSettings,proto3,oneof" json:"workspace_timeout_settings,omitempty"` } func (x *UpdateUserRequest) Reset() { *x = UpdateUserRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[2] + mi := &file_gitpod_v1_user_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -274,7 +366,7 @@ func (x *UpdateUserRequest) String() string { func (*UpdateUserRequest) ProtoMessage() {} func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[2] + mi := &file_gitpod_v1_user_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -287,7 +379,7 @@ func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserRequest.ProtoReflect.Descriptor instead. func (*UpdateUserRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4} } func (x *UpdateUserRequest) GetUserId() string { @@ -339,13 +431,6 @@ func (x *UpdateUserRequest) GetEmailNotificationSettings() *UpdateUserRequest_Em return nil } -func (x *UpdateUserRequest) GetWorkspaceAutostartOptions() []*UpdateUserRequest_WorkspaceAutostartOption { - if x != nil { - return x.WorkspaceAutostartOptions - } - return nil -} - func (x *UpdateUserRequest) GetWorkspaceTimeoutSettings() *UpdateUserRequest_WorkspaceTimeoutSettings { if x != nil { return x.WorkspaceTimeoutSettings @@ -364,7 +449,7 @@ type UpdateUserResponse struct { func (x *UpdateUserResponse) Reset() { *x = UpdateUserResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[3] + mi := &file_gitpod_v1_user_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -377,7 +462,7 @@ func (x *UpdateUserResponse) String() string { func (*UpdateUserResponse) ProtoMessage() {} func (x *UpdateUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[3] + mi := &file_gitpod_v1_user_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -390,7 +475,7 @@ func (x *UpdateUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserResponse.ProtoReflect.Descriptor instead. func (*UpdateUserResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{3} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{5} } func (x *UpdateUserResponse) GetUser() *User { @@ -462,7 +547,7 @@ type User struct { func (x *User) Reset() { *x = User{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[4] + mi := &file_gitpod_v1_user_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -475,7 +560,7 @@ func (x *User) String() string { func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[4] + mi := &file_gitpod_v1_user_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -488,7 +573,7 @@ func (x *User) ProtoReflect() protoreflect.Message { // Deprecated: Use User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{6} } func (x *User) GetId() string { @@ -646,7 +731,7 @@ type Identity struct { func (x *Identity) Reset() { *x = Identity{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[5] + mi := &file_gitpod_v1_user_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -659,7 +744,7 @@ func (x *Identity) String() string { func (*Identity) ProtoMessage() {} func (x *Identity) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[5] + mi := &file_gitpod_v1_user_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -672,7 +757,7 @@ func (x *Identity) ProtoReflect() protoreflect.Message { // Deprecated: Use Identity.ProtoReflect.Descriptor instead. func (*Identity) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{5} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{7} } func (x *Identity) GetAuthProviderId() string { @@ -710,6 +795,85 @@ func (x *Identity) GetLastSigninTime() *timestamppb.Timestamp { return nil } +type SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CloneUrl string `protobuf:"bytes,1,opt,name=clone_url,json=cloneUrl,proto3" json:"clone_url,omitempty"` + OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` + WorkspaceClass *string `protobuf:"bytes,3,opt,name=workspace_class,json=workspaceClass,proto3,oneof" json:"workspace_class,omitempty"` + EditorSettings *EditorReference `protobuf:"bytes,4,opt,name=editor_settings,json=editorSettings,proto3,oneof" json:"editor_settings,omitempty"` + Region *string `protobuf:"bytes,5,opt,name=region,proto3,oneof" json:"region,omitempty"` +} + +func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) Reset() { + *x = SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_user_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) ProtoMessage() {} + +func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_user_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption.ProtoReflect.Descriptor instead. +func (*SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) Descriptor() ([]byte, []int) { + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) GetCloneUrl() string { + if x != nil { + return x.CloneUrl + } + return "" +} + +func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) GetOrganizationId() string { + if x != nil { + return x.OrganizationId + } + return "" +} + +func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) GetWorkspaceClass() string { + if x != nil && x.WorkspaceClass != nil { + return *x.WorkspaceClass + } + return "" +} + +func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) GetEditorSettings() *EditorReference { + if x != nil { + return x.EditorSettings + } + return nil +} + +func (x *SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption) GetRegion() string { + if x != nil && x.Region != nil { + return *x.Region + } + return "" +} + type UpdateUserRequest_ProfileDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -731,7 +895,7 @@ type UpdateUserRequest_ProfileDetails struct { func (x *UpdateUserRequest_ProfileDetails) Reset() { *x = UpdateUserRequest_ProfileDetails{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[6] + mi := &file_gitpod_v1_user_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -744,7 +908,7 @@ func (x *UpdateUserRequest_ProfileDetails) String() string { func (*UpdateUserRequest_ProfileDetails) ProtoMessage() {} func (x *UpdateUserRequest_ProfileDetails) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[6] + mi := &file_gitpod_v1_user_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -757,7 +921,7 @@ func (x *UpdateUserRequest_ProfileDetails) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserRequest_ProfileDetails.ProtoReflect.Descriptor instead. func (*UpdateUserRequest_ProfileDetails) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 0} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 0} } func (x *UpdateUserRequest_ProfileDetails) GetLastUpdatedDetailsNudge() string { @@ -850,7 +1014,7 @@ type UpdateUserRequest_EmailNotificationSettings struct { func (x *UpdateUserRequest_EmailNotificationSettings) Reset() { *x = UpdateUserRequest_EmailNotificationSettings{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[7] + mi := &file_gitpod_v1_user_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -863,7 +1027,7 @@ func (x *UpdateUserRequest_EmailNotificationSettings) String() string { func (*UpdateUserRequest_EmailNotificationSettings) ProtoMessage() {} func (x *UpdateUserRequest_EmailNotificationSettings) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[7] + mi := &file_gitpod_v1_user_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -876,7 +1040,7 @@ func (x *UpdateUserRequest_EmailNotificationSettings) ProtoReflect() protoreflec // Deprecated: Use UpdateUserRequest_EmailNotificationSettings.ProtoReflect.Descriptor instead. func (*UpdateUserRequest_EmailNotificationSettings) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 1} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 1} } func (x *UpdateUserRequest_EmailNotificationSettings) GetAllowsChangelogMail() bool { @@ -900,85 +1064,6 @@ func (x *UpdateUserRequest_EmailNotificationSettings) GetAllowsOnboardingMail() return false } -type UpdateUserRequest_WorkspaceAutostartOption struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CloneUrl string `protobuf:"bytes,1,opt,name=clone_url,json=cloneUrl,proto3" json:"clone_url,omitempty"` - OrganizationId string `protobuf:"bytes,2,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` - WorkspaceClass string `protobuf:"bytes,3,opt,name=workspace_class,json=workspaceClass,proto3" json:"workspace_class,omitempty"` - EditorSettings *EditorReference `protobuf:"bytes,4,opt,name=editor_settings,json=editorSettings,proto3" json:"editor_settings,omitempty"` - Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` -} - -func (x *UpdateUserRequest_WorkspaceAutostartOption) Reset() { - *x = UpdateUserRequest_WorkspaceAutostartOption{} - if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpdateUserRequest_WorkspaceAutostartOption) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateUserRequest_WorkspaceAutostartOption) ProtoMessage() {} - -func (x *UpdateUserRequest_WorkspaceAutostartOption) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateUserRequest_WorkspaceAutostartOption.ProtoReflect.Descriptor instead. -func (*UpdateUserRequest_WorkspaceAutostartOption) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 2} -} - -func (x *UpdateUserRequest_WorkspaceAutostartOption) GetCloneUrl() string { - if x != nil { - return x.CloneUrl - } - return "" -} - -func (x *UpdateUserRequest_WorkspaceAutostartOption) GetOrganizationId() string { - if x != nil { - return x.OrganizationId - } - return "" -} - -func (x *UpdateUserRequest_WorkspaceAutostartOption) GetWorkspaceClass() string { - if x != nil { - return x.WorkspaceClass - } - return "" -} - -func (x *UpdateUserRequest_WorkspaceAutostartOption) GetEditorSettings() *EditorReference { - if x != nil { - return x.EditorSettings - } - return nil -} - -func (x *UpdateUserRequest_WorkspaceAutostartOption) GetRegion() string { - if x != nil { - return x.Region - } - return "" -} - type UpdateUserRequest_WorkspaceTimeoutSettings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -991,7 +1076,7 @@ type UpdateUserRequest_WorkspaceTimeoutSettings struct { func (x *UpdateUserRequest_WorkspaceTimeoutSettings) Reset() { *x = UpdateUserRequest_WorkspaceTimeoutSettings{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[9] + mi := &file_gitpod_v1_user_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1004,7 +1089,7 @@ func (x *UpdateUserRequest_WorkspaceTimeoutSettings) String() string { func (*UpdateUserRequest_WorkspaceTimeoutSettings) ProtoMessage() {} func (x *UpdateUserRequest_WorkspaceTimeoutSettings) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[9] + mi := &file_gitpod_v1_user_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1017,7 +1102,7 @@ func (x *UpdateUserRequest_WorkspaceTimeoutSettings) ProtoReflect() protoreflect // Deprecated: Use UpdateUserRequest_WorkspaceTimeoutSettings.ProtoReflect.Descriptor instead. func (*UpdateUserRequest_WorkspaceTimeoutSettings) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{2, 3} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 2} } func (x *UpdateUserRequest_WorkspaceTimeoutSettings) GetInactivity() *durationpb.Duration { @@ -1050,7 +1135,7 @@ type User_WorkspaceTimeoutSettings struct { func (x *User_WorkspaceTimeoutSettings) Reset() { *x = User_WorkspaceTimeoutSettings{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[10] + mi := &file_gitpod_v1_user_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1063,7 +1148,7 @@ func (x *User_WorkspaceTimeoutSettings) String() string { func (*User_WorkspaceTimeoutSettings) ProtoMessage() {} func (x *User_WorkspaceTimeoutSettings) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[10] + mi := &file_gitpod_v1_user_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1076,7 +1161,7 @@ func (x *User_WorkspaceTimeoutSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use User_WorkspaceTimeoutSettings.ProtoReflect.Descriptor instead. func (*User_WorkspaceTimeoutSettings) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 0} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{6, 0} } func (x *User_WorkspaceTimeoutSettings) GetInactivity() *durationpb.Duration { @@ -1109,7 +1194,7 @@ type User_EmailNotificationSettings struct { func (x *User_EmailNotificationSettings) Reset() { *x = User_EmailNotificationSettings{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[11] + mi := &file_gitpod_v1_user_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1122,7 +1207,7 @@ func (x *User_EmailNotificationSettings) String() string { func (*User_EmailNotificationSettings) ProtoMessage() {} func (x *User_EmailNotificationSettings) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[11] + mi := &file_gitpod_v1_user_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1135,7 +1220,7 @@ func (x *User_EmailNotificationSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use User_EmailNotificationSettings.ProtoReflect.Descriptor instead. func (*User_EmailNotificationSettings) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 1} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{6, 1} } func (x *User_EmailNotificationSettings) GetAllowsChangelogMail() bool { @@ -1213,7 +1298,7 @@ type User_ProfileDetails struct { func (x *User_ProfileDetails) Reset() { *x = User_ProfileDetails{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[12] + mi := &file_gitpod_v1_user_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1226,7 +1311,7 @@ func (x *User_ProfileDetails) String() string { func (*User_ProfileDetails) ProtoMessage() {} func (x *User_ProfileDetails) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[12] + mi := &file_gitpod_v1_user_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1239,7 +1324,7 @@ func (x *User_ProfileDetails) ProtoReflect() protoreflect.Message { // Deprecated: Use User_ProfileDetails.ProtoReflect.Descriptor instead. func (*User_ProfileDetails) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 2} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{6, 2} } func (x *User_ProfileDetails) GetLastUpdatedDetailsNudge() string { @@ -1336,7 +1421,7 @@ type User_WorkspaceAutostartOption struct { func (x *User_WorkspaceAutostartOption) Reset() { *x = User_WorkspaceAutostartOption{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_user_proto_msgTypes[13] + mi := &file_gitpod_v1_user_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1349,7 +1434,7 @@ func (x *User_WorkspaceAutostartOption) String() string { func (*User_WorkspaceAutostartOption) ProtoMessage() {} func (x *User_WorkspaceAutostartOption) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_user_proto_msgTypes[13] + mi := &file_gitpod_v1_user_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1362,7 +1447,7 @@ func (x *User_WorkspaceAutostartOption) ProtoReflect() protoreflect.Message { // Deprecated: Use User_WorkspaceAutostartOption.ProtoReflect.Descriptor instead. func (*User_WorkspaceAutostartOption) Descriptor() ([]byte, []int) { - return file_gitpod_v1_user_proto_rawDescGZIP(), []int{4, 3} + return file_gitpod_v1_user_proto_rawDescGZIP(), []int{6, 3} } func (x *User_WorkspaceAutostartOption) GetCloneUrl() string { @@ -1416,114 +1501,288 @@ var file_gitpod_v1_user_proto_rawDesc = []byte{ 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0xe8, - 0x11, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0xf3, + 0x03, 0x0a, 0x23, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, + 0x75, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x87, 0x01, 0x0a, 0x1b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x75, + 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, + 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, + 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, + 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xa8, 0x02, 0x0a, 0x18, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, + 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0f, + 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x0f, 0x65, 0x64, + 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, + 0x01, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, + 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, + 0x67, 0x69, 0x6f, 0x6e, 0x22, 0x26, 0x0a, 0x24, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x0f, 0x0a, + 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, + 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, + 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x19, 0x61, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x44, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x07, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, + 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x48, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x04, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x7b, 0x0a, 0x1b, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x36, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6d, + 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x05, 0x52, 0x19, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x48, 0x06, 0x52, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, + 0x01, 0x1a, 0xdd, 0x05, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x5f, 0x6e, 0x75, 0x64, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4e, 0x75, + 0x64, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x19, + 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x19, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x02, 0x52, 0x07, 0x70, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x03, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x48, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x04, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, - 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x7b, 0x0a, 0x1b, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x05, 0x52, 0x19, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x75, 0x0a, 0x1b, 0x77, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x78, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x06, 0x52, 0x18, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x1a, 0xdd, 0x05, 0x0a, 0x0e, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x40, 0x0a, - 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x5f, 0x6e, 0x75, 0x64, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x4e, 0x75, 0x64, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x44, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x19, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, - 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x61, - 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x63, - 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, - 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x72, - 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x07, 0x6a, 0x6f, 0x62, - 0x52, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x6a, 0x6f, 0x62, 0x5f, 0x72, - 0x6f, 0x6c, 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x05, 0x52, 0x0c, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x88, - 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x12, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, - 0x61, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x75, - 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, - 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, - 0x73, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x6f, 0x6e, 0x62, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0c, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1e, + 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x04, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, + 0x0a, 0x0e, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0c, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, + 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x69, + 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x12, 0x31, 0x0a, + 0x12, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x5f, 0x6f, 0x74, + 0x68, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x73, 0x69, 0x67, + 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x34, 0x0a, 0x13, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, + 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x0b, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x42, 0x1d, + 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x5f, 0x6e, 0x75, 0x64, 0x67, 0x65, 0x42, 0x1f, 0x0a, + 0x1d, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x42, 0x0f, + 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, + 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, + 0x6c, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, - 0x64, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x26, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x08, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, - 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x73, 0x74, + 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x1a, 0x88, 0x02, 0x0a, 0x19, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x37, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, + 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x78, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x01, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x76, 0x78, + 0x4d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x73, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x73, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x88, + 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x78, 0x5f, 0x6d, 0x61, 0x69, + 0x6c, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x6e, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x1a, 0xbd, 0x01, 0x0a, + 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x15, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x39, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, + 0x65, 0x72, 0x22, 0xd2, 0x16, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, + 0x64, 0x12, 0x50, 0x0a, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 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, 0x14, 0x6c, + 0x61, 0x73, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x66, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x18, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x69, 0x0a, 0x1b, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, + 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x45, 0x6d, + 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x19, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x74, 0x66, 0x69, + 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x6f, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x68, 0x0a, + 0x1b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, + 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x75, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x75, 0x73, 0x61, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x57, 0x0a, 0x17, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x15, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, + 0x67, 0x73, 0x12, 0x52, 0x0a, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x5f, 0x6f, 0x72, 0x5f, 0x70, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x12, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x8a, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x33, + 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x1a, 0xaf, 0x01, 0x0a, 0x19, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, + 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, + 0x64, 0x65, 0x76, 0x78, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x76, 0x78, 0x4d, 0x61, 0x69, 0x6c, 0x12, + 0x34, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x1a, 0xed, 0x03, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x5f, 0x6e, 0x75, 0x64, 0x67, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, - 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, - 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6a, - 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, - 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, - 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65, - 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x1a, 0x88, 0x02, 0x0a, 0x19, 0x45, - 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x69, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x88, 0x01, - 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x78, - 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0e, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x76, 0x78, 0x4d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x39, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x02, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, - 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, - 0x5f, 0x64, 0x65, 0x76, 0x78, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x1a, 0xe6, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x5f, 0x6e, 0x75, 0x64, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x61, + 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x4e, 0x75, 0x64, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, + 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x61, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x44, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x19, + 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6a, 0x6f, 0x62, + 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x12, + 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x65, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, 0x6c, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x47, 0x6f, + 0x61, 0x6c, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, + 0x61, 0x6c, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x4f, 0x74, 0x68, 0x65, + 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, + 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, + 0x79, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0xe6, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12, @@ -1537,244 +1796,90 @@ var file_gitpod_v1_user_proto_rawDesc = []byte{ 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x1a, 0xbd, - 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x69, - 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x15, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x14, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, - 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x39, 0x0a, 0x12, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x23, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, - 0x75, 0x73, 0x65, 0x72, 0x22, 0xd2, 0x16, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, - 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, - 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 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, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, - 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0xeb, + 0x01, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, + 0x61, 0x67, 0x12, 0x21, 0x0a, 0x1d, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, + 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, + 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x5f, + 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, + 0x10, 0x01, 0x12, 0x2e, 0x0a, 0x2a, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, + 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, + 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x49, 0x4e, 0x47, + 0x10, 0x02, 0x12, 0x33, 0x0a, 0x2f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, + 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, + 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x4d, + 0x49, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x55, 0x53, 0x45, 0x52, 0x5f, + 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, + 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x53, 0x49, 0x10, 0x04, 0x22, 0xd8, 0x03, 0x0a, + 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, + 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, + 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x4f, + 0x50, 0x53, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, + 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x45, + 0x52, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, + 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x10, + 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, + 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x45, 0x4c, 0x4f, 0x50, 0x45, + 0x52, 0x10, 0x04, 0x12, 0x26, 0x0a, 0x22, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, + 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, + 0x52, 0x59, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x52, + 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x53, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, + 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, + 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x07, 0x12, 0x2e, 0x0a, 0x2a, 0x52, 0x4f, 0x4c, + 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x08, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x4f, 0x4c, + 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x53, + 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, + 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x50, + 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x2c, 0x0a, 0x28, 0x52, 0x4f, 0x4c, + 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x4e, 0x45, 0x57, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4c, + 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x0b, 0x22, 0xd5, 0x01, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x61, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, + 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x61, 0x75, 0x74, 0x68, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 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, - 0x14, 0x6c, 0x61, 0x73, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x66, 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x69, 0x0a, 0x1b, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, - 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x19, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, - 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x74, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x6f, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x27, 0x0a, 0x0f, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, - 0x68, 0x0a, 0x1b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x75, 0x74, - 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, - 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x75, 0x73, 0x61, - 0x67, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x75, 0x73, 0x61, 0x67, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x57, 0x0a, 0x17, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x15, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, - 0x6c, 0x61, 0x67, 0x73, 0x12, 0x52, 0x0a, 0x14, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x5f, 0x6f, 0x72, - 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x13, 0x20, 0x03, - 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x4f, 0x72, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x8a, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x12, 0x33, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x69, 0x73, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x1a, 0xaf, 0x01, 0x0a, 0x19, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x6c, 0x6f, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x73, 0x5f, 0x64, 0x65, 0x76, 0x78, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x44, 0x65, 0x76, 0x78, 0x4d, 0x61, 0x69, - 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x5f, 0x6f, 0x6e, 0x62, 0x6f, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x14, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x69, 0x6c, 0x1a, 0xed, 0x03, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x5f, 0x6e, 0x75, 0x64, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, - 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x4e, 0x75, 0x64, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x61, 0x63, 0x63, 0x65, 0x70, - 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x61, - 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x44, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, - 0x61, 0x6e, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6a, - 0x6f, 0x62, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6a, 0x6f, 0x62, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x74, 0x68, 0x65, - 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, - 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, 0x67, 0x6f, 0x61, - 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, - 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x5f, - 0x67, 0x6f, 0x61, 0x6c, 0x73, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x47, 0x6f, 0x61, 0x6c, 0x73, 0x4f, 0x74, - 0x68, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x6f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, - 0x61, 0x6e, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0xe6, 0x01, 0x0a, 0x18, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, - 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x22, 0xeb, 0x01, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x46, 0x6c, 0x61, 0x67, 0x12, 0x21, 0x0a, 0x1d, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, - 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x55, 0x53, 0x45, 0x52, 0x5f, - 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x46, 0x55, 0x4c, - 0x4c, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, - 0x55, 0x50, 0x10, 0x01, 0x12, 0x2e, 0x0a, 0x2a, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, - 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, - 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x49, - 0x4e, 0x47, 0x10, 0x02, 0x12, 0x33, 0x0a, 0x2f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x41, - 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, - 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, - 0x49, 0x4d, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x55, 0x53, 0x45, - 0x52, 0x5f, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x57, - 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x50, 0x53, 0x49, 0x10, 0x04, 0x22, 0xd8, - 0x03, 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x4f, 0x72, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, - 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x4c, 0x45, 0x5f, - 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, - 0x56, 0x4f, 0x50, 0x53, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, - 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x49, 0x45, - 0x57, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, - 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, - 0x4e, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, - 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x56, 0x45, 0x4c, 0x4f, - 0x50, 0x45, 0x52, 0x10, 0x04, 0x12, 0x26, 0x0a, 0x22, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, - 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, - 0x53, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x05, 0x12, 0x28, 0x0a, - 0x24, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, - 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x4c, 0x45, 0x5f, - 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, - 0x4d, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x53, 0x10, 0x07, 0x12, 0x2e, 0x0a, 0x2a, 0x52, - 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, - 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x08, 0x12, 0x27, 0x0a, 0x23, 0x52, - 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, - 0x45, 0x53, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, - 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, - 0x5f, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x2c, 0x0a, 0x28, 0x52, - 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, - 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x10, 0x0b, 0x22, 0xd5, 0x01, 0x0a, 0x08, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x74, - 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, - 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, - 0x79, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, - 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x44, 0x0a, 0x10, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x06, 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, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x32, 0xc5, 0x01, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x69, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x32, + 0xc9, 0x02, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x69, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x37, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, - 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x41, 0x75, 0x74, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 0x5a, 0x37, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, + 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, + 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1790,57 +1895,61 @@ func file_gitpod_v1_user_proto_rawDescGZIP() []byte { } var file_gitpod_v1_user_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_gitpod_v1_user_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_gitpod_v1_user_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_gitpod_v1_user_proto_goTypes = []interface{}{ - (User_UserFeatureFlag)(0), // 0: gitpod.v1.User.UserFeatureFlag - (User_RoleOrPermission)(0), // 1: gitpod.v1.User.RoleOrPermission - (*GetAuthenticatedUserRequest)(nil), // 2: gitpod.v1.GetAuthenticatedUserRequest - (*GetAuthenticatedUserResponse)(nil), // 3: gitpod.v1.GetAuthenticatedUserResponse - (*UpdateUserRequest)(nil), // 4: gitpod.v1.UpdateUserRequest - (*UpdateUserResponse)(nil), // 5: gitpod.v1.UpdateUserResponse - (*User)(nil), // 6: gitpod.v1.User - (*Identity)(nil), // 7: gitpod.v1.Identity - (*UpdateUserRequest_ProfileDetails)(nil), // 8: gitpod.v1.UpdateUserRequest.ProfileDetails - (*UpdateUserRequest_EmailNotificationSettings)(nil), // 9: gitpod.v1.UpdateUserRequest.EmailNotificationSettings - (*UpdateUserRequest_WorkspaceAutostartOption)(nil), // 10: gitpod.v1.UpdateUserRequest.WorkspaceAutostartOption - (*UpdateUserRequest_WorkspaceTimeoutSettings)(nil), // 11: gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings - (*User_WorkspaceTimeoutSettings)(nil), // 12: gitpod.v1.User.WorkspaceTimeoutSettings - (*User_EmailNotificationSettings)(nil), // 13: gitpod.v1.User.EmailNotificationSettings - (*User_ProfileDetails)(nil), // 14: gitpod.v1.User.ProfileDetails - (*User_WorkspaceAutostartOption)(nil), // 15: gitpod.v1.User.WorkspaceAutostartOption - (*EditorReference)(nil), // 16: gitpod.v1.EditorReference - (*timestamppb.Timestamp)(nil), // 17: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 18: google.protobuf.Duration + (User_UserFeatureFlag)(0), // 0: gitpod.v1.User.UserFeatureFlag + (User_RoleOrPermission)(0), // 1: gitpod.v1.User.RoleOrPermission + (*GetAuthenticatedUserRequest)(nil), // 2: gitpod.v1.GetAuthenticatedUserRequest + (*GetAuthenticatedUserResponse)(nil), // 3: gitpod.v1.GetAuthenticatedUserResponse + (*SetWorkspaceAutoStartOptionsRequest)(nil), // 4: gitpod.v1.SetWorkspaceAutoStartOptionsRequest + (*SetWorkspaceAutoStartOptionsResponse)(nil), // 5: gitpod.v1.SetWorkspaceAutoStartOptionsResponse + (*UpdateUserRequest)(nil), // 6: gitpod.v1.UpdateUserRequest + (*UpdateUserResponse)(nil), // 7: gitpod.v1.UpdateUserResponse + (*User)(nil), // 8: gitpod.v1.User + (*Identity)(nil), // 9: gitpod.v1.Identity + (*SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption)(nil), // 10: gitpod.v1.SetWorkspaceAutoStartOptionsRequest.WorkspaceAutostartOption + (*UpdateUserRequest_ProfileDetails)(nil), // 11: gitpod.v1.UpdateUserRequest.ProfileDetails + (*UpdateUserRequest_EmailNotificationSettings)(nil), // 12: gitpod.v1.UpdateUserRequest.EmailNotificationSettings + (*UpdateUserRequest_WorkspaceTimeoutSettings)(nil), // 13: gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings + (*User_WorkspaceTimeoutSettings)(nil), // 14: gitpod.v1.User.WorkspaceTimeoutSettings + (*User_EmailNotificationSettings)(nil), // 15: gitpod.v1.User.EmailNotificationSettings + (*User_ProfileDetails)(nil), // 16: gitpod.v1.User.ProfileDetails + (*User_WorkspaceAutostartOption)(nil), // 17: gitpod.v1.User.WorkspaceAutostartOption + (*EditorReference)(nil), // 18: gitpod.v1.EditorReference + (*timestamppb.Timestamp)(nil), // 19: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 20: google.protobuf.Duration } var file_gitpod_v1_user_proto_depIdxs = []int32{ - 6, // 0: gitpod.v1.GetAuthenticatedUserResponse.user:type_name -> gitpod.v1.User - 8, // 1: gitpod.v1.UpdateUserRequest.profile:type_name -> gitpod.v1.UpdateUserRequest.ProfileDetails - 16, // 2: gitpod.v1.UpdateUserRequest.editor_settings:type_name -> gitpod.v1.EditorReference - 9, // 3: gitpod.v1.UpdateUserRequest.email_notification_settings:type_name -> gitpod.v1.UpdateUserRequest.EmailNotificationSettings - 10, // 4: gitpod.v1.UpdateUserRequest.workspace_autostart_options:type_name -> gitpod.v1.UpdateUserRequest.WorkspaceAutostartOption - 11, // 5: gitpod.v1.UpdateUserRequest.workspace_timeout_settings:type_name -> gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings - 6, // 6: gitpod.v1.UpdateUserResponse.user:type_name -> gitpod.v1.User - 17, // 7: gitpod.v1.User.created_at:type_name -> google.protobuf.Timestamp - 7, // 8: gitpod.v1.User.identities:type_name -> gitpod.v1.Identity - 17, // 9: gitpod.v1.User.last_verification_time:type_name -> google.protobuf.Timestamp - 12, // 10: gitpod.v1.User.workspace_timeout_settings:type_name -> gitpod.v1.User.WorkspaceTimeoutSettings - 13, // 11: gitpod.v1.User.email_notification_settings:type_name -> gitpod.v1.User.EmailNotificationSettings - 16, // 12: gitpod.v1.User.editor_settings:type_name -> gitpod.v1.EditorReference - 14, // 13: gitpod.v1.User.profile:type_name -> gitpod.v1.User.ProfileDetails - 15, // 14: gitpod.v1.User.workspace_autostart_options:type_name -> gitpod.v1.User.WorkspaceAutostartOption + 8, // 0: gitpod.v1.GetAuthenticatedUserResponse.user:type_name -> gitpod.v1.User + 10, // 1: gitpod.v1.SetWorkspaceAutoStartOptionsRequest.workspace_autostart_options:type_name -> gitpod.v1.SetWorkspaceAutoStartOptionsRequest.WorkspaceAutostartOption + 11, // 2: gitpod.v1.UpdateUserRequest.profile:type_name -> gitpod.v1.UpdateUserRequest.ProfileDetails + 18, // 3: gitpod.v1.UpdateUserRequest.editor_settings:type_name -> gitpod.v1.EditorReference + 12, // 4: gitpod.v1.UpdateUserRequest.email_notification_settings:type_name -> gitpod.v1.UpdateUserRequest.EmailNotificationSettings + 13, // 5: gitpod.v1.UpdateUserRequest.workspace_timeout_settings:type_name -> gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings + 8, // 6: gitpod.v1.UpdateUserResponse.user:type_name -> gitpod.v1.User + 19, // 7: gitpod.v1.User.created_at:type_name -> google.protobuf.Timestamp + 9, // 8: gitpod.v1.User.identities:type_name -> gitpod.v1.Identity + 19, // 9: gitpod.v1.User.last_verification_time:type_name -> google.protobuf.Timestamp + 14, // 10: gitpod.v1.User.workspace_timeout_settings:type_name -> gitpod.v1.User.WorkspaceTimeoutSettings + 15, // 11: gitpod.v1.User.email_notification_settings:type_name -> gitpod.v1.User.EmailNotificationSettings + 18, // 12: gitpod.v1.User.editor_settings:type_name -> gitpod.v1.EditorReference + 16, // 13: gitpod.v1.User.profile:type_name -> gitpod.v1.User.ProfileDetails + 17, // 14: gitpod.v1.User.workspace_autostart_options:type_name -> gitpod.v1.User.WorkspaceAutostartOption 0, // 15: gitpod.v1.User.workspace_feature_flags:type_name -> gitpod.v1.User.UserFeatureFlag 1, // 16: gitpod.v1.User.roles_or_permissions:type_name -> gitpod.v1.User.RoleOrPermission - 17, // 17: gitpod.v1.Identity.last_signin_time:type_name -> google.protobuf.Timestamp - 16, // 18: gitpod.v1.UpdateUserRequest.WorkspaceAutostartOption.editor_settings:type_name -> gitpod.v1.EditorReference - 18, // 19: gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings.inactivity:type_name -> google.protobuf.Duration - 18, // 20: gitpod.v1.User.WorkspaceTimeoutSettings.inactivity:type_name -> google.protobuf.Duration - 16, // 21: gitpod.v1.User.WorkspaceAutostartOption.editor_settings:type_name -> gitpod.v1.EditorReference + 19, // 17: gitpod.v1.Identity.last_signin_time:type_name -> google.protobuf.Timestamp + 18, // 18: gitpod.v1.SetWorkspaceAutoStartOptionsRequest.WorkspaceAutostartOption.editor_settings:type_name -> gitpod.v1.EditorReference + 20, // 19: gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings.inactivity:type_name -> google.protobuf.Duration + 20, // 20: gitpod.v1.User.WorkspaceTimeoutSettings.inactivity:type_name -> google.protobuf.Duration + 18, // 21: gitpod.v1.User.WorkspaceAutostartOption.editor_settings:type_name -> gitpod.v1.EditorReference 2, // 22: gitpod.v1.UserService.GetAuthenticatedUser:input_type -> gitpod.v1.GetAuthenticatedUserRequest - 4, // 23: gitpod.v1.UserService.UpdateUser:input_type -> gitpod.v1.UpdateUserRequest - 3, // 24: gitpod.v1.UserService.GetAuthenticatedUser:output_type -> gitpod.v1.GetAuthenticatedUserResponse - 5, // 25: gitpod.v1.UserService.UpdateUser:output_type -> gitpod.v1.UpdateUserResponse - 24, // [24:26] is the sub-list for method output_type - 22, // [22:24] is the sub-list for method input_type + 6, // 23: gitpod.v1.UserService.UpdateUser:input_type -> gitpod.v1.UpdateUserRequest + 4, // 24: gitpod.v1.UserService.SetWorkspaceAutoStartOptions:input_type -> gitpod.v1.SetWorkspaceAutoStartOptionsRequest + 3, // 25: gitpod.v1.UserService.GetAuthenticatedUser:output_type -> gitpod.v1.GetAuthenticatedUserResponse + 7, // 26: gitpod.v1.UserService.UpdateUser:output_type -> gitpod.v1.UpdateUserResponse + 5, // 27: gitpod.v1.UserService.SetWorkspaceAutoStartOptions:output_type -> gitpod.v1.SetWorkspaceAutoStartOptionsResponse + 25, // [25:28] is the sub-list for method output_type + 22, // [22:25] is the sub-list for method input_type 22, // [22:22] is the sub-list for extension type_name 22, // [22:22] is the sub-list for extension extendee 0, // [0:22] is the sub-list for field type_name @@ -1878,7 +1987,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserRequest); i { + switch v := v.(*SetWorkspaceAutoStartOptionsRequest); i { case 0: return &v.state case 1: @@ -1890,7 +1999,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserResponse); i { + switch v := v.(*SetWorkspaceAutoStartOptionsResponse); i { case 0: return &v.state case 1: @@ -1902,7 +2011,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User); i { + switch v := v.(*UpdateUserRequest); i { case 0: return &v.state case 1: @@ -1914,7 +2023,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Identity); i { + switch v := v.(*UpdateUserResponse); i { case 0: return &v.state case 1: @@ -1926,7 +2035,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserRequest_ProfileDetails); i { + switch v := v.(*User); i { case 0: return &v.state case 1: @@ -1938,7 +2047,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserRequest_EmailNotificationSettings); i { + switch v := v.(*Identity); i { case 0: return &v.state case 1: @@ -1950,7 +2059,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserRequest_WorkspaceAutostartOption); i { + switch v := v.(*SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption); i { case 0: return &v.state case 1: @@ -1962,7 +2071,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateUserRequest_WorkspaceTimeoutSettings); i { + switch v := v.(*UpdateUserRequest_ProfileDetails); i { case 0: return &v.state case 1: @@ -1974,7 +2083,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User_WorkspaceTimeoutSettings); i { + switch v := v.(*UpdateUserRequest_EmailNotificationSettings); i { case 0: return &v.state case 1: @@ -1986,7 +2095,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User_EmailNotificationSettings); i { + switch v := v.(*UpdateUserRequest_WorkspaceTimeoutSettings); i { case 0: return &v.state case 1: @@ -1998,7 +2107,7 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User_ProfileDetails); i { + switch v := v.(*User_WorkspaceTimeoutSettings); i { case 0: return &v.state case 1: @@ -2010,6 +2119,30 @@ func file_gitpod_v1_user_proto_init() { } } file_gitpod_v1_user_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*User_EmailNotificationSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_v1_user_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*User_ProfileDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_v1_user_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*User_WorkspaceAutostartOption); i { case 0: return &v.state @@ -2022,17 +2155,18 @@ func file_gitpod_v1_user_proto_init() { } } } - file_gitpod_v1_user_proto_msgTypes[2].OneofWrappers = []interface{}{} - file_gitpod_v1_user_proto_msgTypes[6].OneofWrappers = []interface{}{} - file_gitpod_v1_user_proto_msgTypes[7].OneofWrappers = []interface{}{} + file_gitpod_v1_user_proto_msgTypes[4].OneofWrappers = []interface{}{} + file_gitpod_v1_user_proto_msgTypes[8].OneofWrappers = []interface{}{} file_gitpod_v1_user_proto_msgTypes[9].OneofWrappers = []interface{}{} + file_gitpod_v1_user_proto_msgTypes[10].OneofWrappers = []interface{}{} + file_gitpod_v1_user_proto_msgTypes[11].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gitpod_v1_user_proto_rawDesc, NumEnums: 2, - NumMessages: 14, + NumMessages: 16, NumExtensions: 0, NumServices: 1, }, diff --git a/components/public-api/go/v1/user_grpc.pb.go b/components/public-api/go/v1/user_grpc.pb.go index 6dd8c87a7e82d8..e820dbb96f6978 100644 --- a/components/public-api/go/v1/user_grpc.pb.go +++ b/components/public-api/go/v1/user_grpc.pb.go @@ -30,6 +30,9 @@ type UserServiceClient interface { GetAuthenticatedUser(ctx context.Context, in *GetAuthenticatedUserRequest, opts ...grpc.CallOption) (*GetAuthenticatedUserResponse, error) // UpdateUser updates the properties of a user. UpdateUser(ctx context.Context, in *UpdateUserRequest, opts ...grpc.CallOption) (*UpdateUserResponse, error) + // SetWorkspaceAutoStartOptions updates the auto start options for the Gitpod Dashboard. + // +internal - only used by the Gitpod Dashboard. + SetWorkspaceAutoStartOptions(ctx context.Context, in *SetWorkspaceAutoStartOptionsRequest, opts ...grpc.CallOption) (*SetWorkspaceAutoStartOptionsResponse, error) } type userServiceClient struct { @@ -58,6 +61,15 @@ func (c *userServiceClient) UpdateUser(ctx context.Context, in *UpdateUserReques return out, nil } +func (c *userServiceClient) SetWorkspaceAutoStartOptions(ctx context.Context, in *SetWorkspaceAutoStartOptionsRequest, opts ...grpc.CallOption) (*SetWorkspaceAutoStartOptionsResponse, error) { + out := new(SetWorkspaceAutoStartOptionsResponse) + err := c.cc.Invoke(ctx, "/gitpod.v1.UserService/SetWorkspaceAutoStartOptions", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // UserServiceServer is the server API for UserService service. // All implementations must embed UnimplementedUserServiceServer // for forward compatibility @@ -66,6 +78,9 @@ type UserServiceServer interface { GetAuthenticatedUser(context.Context, *GetAuthenticatedUserRequest) (*GetAuthenticatedUserResponse, error) // UpdateUser updates the properties of a user. UpdateUser(context.Context, *UpdateUserRequest) (*UpdateUserResponse, error) + // SetWorkspaceAutoStartOptions updates the auto start options for the Gitpod Dashboard. + // +internal - only used by the Gitpod Dashboard. + SetWorkspaceAutoStartOptions(context.Context, *SetWorkspaceAutoStartOptionsRequest) (*SetWorkspaceAutoStartOptionsResponse, error) mustEmbedUnimplementedUserServiceServer() } @@ -79,6 +94,9 @@ func (UnimplementedUserServiceServer) GetAuthenticatedUser(context.Context, *Get func (UnimplementedUserServiceServer) UpdateUser(context.Context, *UpdateUserRequest) (*UpdateUserResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateUser not implemented") } +func (UnimplementedUserServiceServer) SetWorkspaceAutoStartOptions(context.Context, *SetWorkspaceAutoStartOptionsRequest) (*SetWorkspaceAutoStartOptionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetWorkspaceAutoStartOptions not implemented") +} func (UnimplementedUserServiceServer) mustEmbedUnimplementedUserServiceServer() {} // UnsafeUserServiceServer may be embedded to opt out of forward compatibility for this service. @@ -128,6 +146,24 @@ func _UserService_UpdateUser_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _UserService_SetWorkspaceAutoStartOptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetWorkspaceAutoStartOptionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserServiceServer).SetWorkspaceAutoStartOptions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/gitpod.v1.UserService/SetWorkspaceAutoStartOptions", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserServiceServer).SetWorkspaceAutoStartOptions(ctx, req.(*SetWorkspaceAutoStartOptionsRequest)) + } + return interceptor(ctx, in, info, handler) +} + // UserService_ServiceDesc is the grpc.ServiceDesc for UserService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -143,6 +179,10 @@ var UserService_ServiceDesc = grpc.ServiceDesc{ MethodName: "UpdateUser", Handler: _UserService_UpdateUser_Handler, }, + { + MethodName: "SetWorkspaceAutoStartOptions", + Handler: _UserService_SetWorkspaceAutoStartOptions_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "gitpod/v1/user.proto", diff --git a/components/public-api/go/v1/v1connect/user.connect.go b/components/public-api/go/v1/v1connect/user.connect.go index 54da9b79542ebc..3aa5a2c4a9b29f 100644 --- a/components/public-api/go/v1/v1connect/user.connect.go +++ b/components/public-api/go/v1/v1connect/user.connect.go @@ -35,6 +35,9 @@ type UserServiceClient interface { GetAuthenticatedUser(context.Context, *connect_go.Request[v1.GetAuthenticatedUserRequest]) (*connect_go.Response[v1.GetAuthenticatedUserResponse], error) // UpdateUser updates the properties of a user. UpdateUser(context.Context, *connect_go.Request[v1.UpdateUserRequest]) (*connect_go.Response[v1.UpdateUserResponse], error) + // SetWorkspaceAutoStartOptions updates the auto start options for the Gitpod Dashboard. + // +internal - only used by the Gitpod Dashboard. + SetWorkspaceAutoStartOptions(context.Context, *connect_go.Request[v1.SetWorkspaceAutoStartOptionsRequest]) (*connect_go.Response[v1.SetWorkspaceAutoStartOptionsResponse], error) } // NewUserServiceClient constructs a client for the gitpod.v1.UserService service. By default, it @@ -57,13 +60,19 @@ func NewUserServiceClient(httpClient connect_go.HTTPClient, baseURL string, opts baseURL+"/gitpod.v1.UserService/UpdateUser", opts..., ), + setWorkspaceAutoStartOptions: connect_go.NewClient[v1.SetWorkspaceAutoStartOptionsRequest, v1.SetWorkspaceAutoStartOptionsResponse]( + httpClient, + baseURL+"/gitpod.v1.UserService/SetWorkspaceAutoStartOptions", + opts..., + ), } } // userServiceClient implements UserServiceClient. type userServiceClient struct { - getAuthenticatedUser *connect_go.Client[v1.GetAuthenticatedUserRequest, v1.GetAuthenticatedUserResponse] - updateUser *connect_go.Client[v1.UpdateUserRequest, v1.UpdateUserResponse] + getAuthenticatedUser *connect_go.Client[v1.GetAuthenticatedUserRequest, v1.GetAuthenticatedUserResponse] + updateUser *connect_go.Client[v1.UpdateUserRequest, v1.UpdateUserResponse] + setWorkspaceAutoStartOptions *connect_go.Client[v1.SetWorkspaceAutoStartOptionsRequest, v1.SetWorkspaceAutoStartOptionsResponse] } // GetAuthenticatedUser calls gitpod.v1.UserService.GetAuthenticatedUser. @@ -76,12 +85,20 @@ func (c *userServiceClient) UpdateUser(ctx context.Context, req *connect_go.Requ return c.updateUser.CallUnary(ctx, req) } +// SetWorkspaceAutoStartOptions calls gitpod.v1.UserService.SetWorkspaceAutoStartOptions. +func (c *userServiceClient) SetWorkspaceAutoStartOptions(ctx context.Context, req *connect_go.Request[v1.SetWorkspaceAutoStartOptionsRequest]) (*connect_go.Response[v1.SetWorkspaceAutoStartOptionsResponse], error) { + return c.setWorkspaceAutoStartOptions.CallUnary(ctx, req) +} + // UserServiceHandler is an implementation of the gitpod.v1.UserService service. type UserServiceHandler interface { // GetAuthenticatedUser allows to retrieve the current user. GetAuthenticatedUser(context.Context, *connect_go.Request[v1.GetAuthenticatedUserRequest]) (*connect_go.Response[v1.GetAuthenticatedUserResponse], error) // UpdateUser updates the properties of a user. UpdateUser(context.Context, *connect_go.Request[v1.UpdateUserRequest]) (*connect_go.Response[v1.UpdateUserResponse], error) + // SetWorkspaceAutoStartOptions updates the auto start options for the Gitpod Dashboard. + // +internal - only used by the Gitpod Dashboard. + SetWorkspaceAutoStartOptions(context.Context, *connect_go.Request[v1.SetWorkspaceAutoStartOptionsRequest]) (*connect_go.Response[v1.SetWorkspaceAutoStartOptionsResponse], error) } // NewUserServiceHandler builds an HTTP handler from the service implementation. It returns the path @@ -101,6 +118,11 @@ func NewUserServiceHandler(svc UserServiceHandler, opts ...connect_go.HandlerOpt svc.UpdateUser, opts..., )) + mux.Handle("/gitpod.v1.UserService/SetWorkspaceAutoStartOptions", connect_go.NewUnaryHandler( + "/gitpod.v1.UserService/SetWorkspaceAutoStartOptions", + svc.SetWorkspaceAutoStartOptions, + opts..., + )) return "/gitpod.v1.UserService/", mux } @@ -114,3 +136,7 @@ func (UnimplementedUserServiceHandler) GetAuthenticatedUser(context.Context, *co func (UnimplementedUserServiceHandler) UpdateUser(context.Context, *connect_go.Request[v1.UpdateUserRequest]) (*connect_go.Response[v1.UpdateUserResponse], error) { return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.UserService.UpdateUser is not implemented")) } + +func (UnimplementedUserServiceHandler) SetWorkspaceAutoStartOptions(context.Context, *connect_go.Request[v1.SetWorkspaceAutoStartOptionsRequest]) (*connect_go.Response[v1.SetWorkspaceAutoStartOptionsResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.UserService.SetWorkspaceAutoStartOptions is not implemented")) +} diff --git a/components/public-api/go/v1/v1connect/user.proxy.connect.go b/components/public-api/go/v1/v1connect/user.proxy.connect.go index 38812052a9b781..0a952179d38163 100644 --- a/components/public-api/go/v1/v1connect/user.proxy.connect.go +++ b/components/public-api/go/v1/v1connect/user.proxy.connect.go @@ -38,3 +38,13 @@ func (s *ProxyUserServiceHandler) UpdateUser(ctx context.Context, req *connect_g return connect_go.NewResponse(resp), nil } + +func (s *ProxyUserServiceHandler) SetWorkspaceAutoStartOptions(ctx context.Context, req *connect_go.Request[v1.SetWorkspaceAutoStartOptionsRequest]) (*connect_go.Response[v1.SetWorkspaceAutoStartOptionsResponse], error) { + resp, err := s.Client.SetWorkspaceAutoStartOptions(ctx, req.Msg) + if err != nil { + // TODO(milan): Convert to correct status code + return nil, err + } + + return connect_go.NewResponse(resp), nil +} diff --git a/components/public-api/typescript/src/gitpod/v1/user_connect.ts b/components/public-api/typescript/src/gitpod/v1/user_connect.ts index 21b13fa3f35ea6..1cbd70803b4666 100644 --- a/components/public-api/typescript/src/gitpod/v1/user_connect.ts +++ b/components/public-api/typescript/src/gitpod/v1/user_connect.ts @@ -9,7 +9,7 @@ /* eslint-disable */ // @ts-nocheck -import { GetAuthenticatedUserRequest, GetAuthenticatedUserResponse, UpdateUserRequest, UpdateUserResponse } from "./user_pb.js"; +import { GetAuthenticatedUserRequest, GetAuthenticatedUserResponse, SetWorkspaceAutoStartOptionsRequest, SetWorkspaceAutoStartOptionsResponse, UpdateUserRequest, UpdateUserResponse } from "./user_pb.js"; import { MethodKind } from "@bufbuild/protobuf"; /** @@ -40,5 +40,17 @@ export const UserService = { O: UpdateUserResponse, kind: MethodKind.Unary, }, + /** + * SetWorkspaceAutoStartOptions updates the auto start options for the Gitpod Dashboard. + * +internal - only used by the Gitpod Dashboard. + * + * @generated from rpc gitpod.v1.UserService.SetWorkspaceAutoStartOptions + */ + setWorkspaceAutoStartOptions: { + name: "SetWorkspaceAutoStartOptions", + I: SetWorkspaceAutoStartOptionsRequest, + O: SetWorkspaceAutoStartOptionsResponse, + kind: MethodKind.Unary, + }, } } as const; diff --git a/components/public-api/typescript/src/gitpod/v1/user_pb.ts b/components/public-api/typescript/src/gitpod/v1/user_pb.ts index f8a481ef5283a5..a6c22aabbcb81a 100644 --- a/components/public-api/typescript/src/gitpod/v1/user_pb.ts +++ b/components/public-api/typescript/src/gitpod/v1/user_pb.ts @@ -81,6 +81,141 @@ export class GetAuthenticatedUserResponse extends Message { + /** + * @generated from field: string user_id = 1; + */ + userId = ""; + + /** + * @generated from field: repeated gitpod.v1.SetWorkspaceAutoStartOptionsRequest.WorkspaceAutostartOption workspace_autostart_options = 2; + */ + workspaceAutostartOptions: SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "gitpod.v1.SetWorkspaceAutoStartOptionsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "user_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "workspace_autostart_options", kind: "message", T: SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SetWorkspaceAutoStartOptionsRequest { + return new SetWorkspaceAutoStartOptionsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SetWorkspaceAutoStartOptionsRequest { + return new SetWorkspaceAutoStartOptionsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SetWorkspaceAutoStartOptionsRequest { + return new SetWorkspaceAutoStartOptionsRequest().fromJsonString(jsonString, options); + } + + static equals(a: SetWorkspaceAutoStartOptionsRequest | PlainMessage | undefined, b: SetWorkspaceAutoStartOptionsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(SetWorkspaceAutoStartOptionsRequest, a, b); + } +} + +/** + * @generated from message gitpod.v1.SetWorkspaceAutoStartOptionsRequest.WorkspaceAutostartOption + */ +export class SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption extends Message { + /** + * @generated from field: string clone_url = 1; + */ + cloneUrl = ""; + + /** + * @generated from field: string organization_id = 2; + */ + organizationId = ""; + + /** + * @generated from field: optional string workspace_class = 3; + */ + workspaceClass?: string; + + /** + * @generated from field: optional gitpod.v1.EditorReference editor_settings = 4; + */ + editorSettings?: EditorReference; + + /** + * @generated from field: optional string region = 5; + */ + region?: string; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "gitpod.v1.SetWorkspaceAutoStartOptionsRequest.WorkspaceAutostartOption"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "clone_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "workspace_class", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 4, name: "editor_settings", kind: "message", T: EditorReference, opt: true }, + { no: 5, name: "region", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption { + return new SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption { + return new SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption { + return new SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption().fromJsonString(jsonString, options); + } + + static equals(a: SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption | PlainMessage | undefined, b: SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption | PlainMessage | undefined): boolean { + return proto3.util.equals(SetWorkspaceAutoStartOptionsRequest_WorkspaceAutostartOption, a, b); + } +} + +/** + * @generated from message gitpod.v1.SetWorkspaceAutoStartOptionsResponse + */ +export class SetWorkspaceAutoStartOptionsResponse extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "gitpod.v1.SetWorkspaceAutoStartOptionsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SetWorkspaceAutoStartOptionsResponse { + return new SetWorkspaceAutoStartOptionsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SetWorkspaceAutoStartOptionsResponse { + return new SetWorkspaceAutoStartOptionsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SetWorkspaceAutoStartOptionsResponse { + return new SetWorkspaceAutoStartOptionsResponse().fromJsonString(jsonString, options); + } + + static equals(a: SetWorkspaceAutoStartOptionsResponse | PlainMessage | undefined, b: SetWorkspaceAutoStartOptionsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(SetWorkspaceAutoStartOptionsResponse, a, b); + } +} + /** * @generated from message gitpod.v1.UpdateUserRequest */ @@ -121,12 +256,7 @@ export class UpdateUserRequest extends Message { emailNotificationSettings?: UpdateUserRequest_EmailNotificationSettings; /** - * @generated from field: repeated gitpod.v1.UpdateUserRequest.WorkspaceAutostartOption workspace_autostart_options = 8; - */ - workspaceAutostartOptions: UpdateUserRequest_WorkspaceAutostartOption[] = []; - - /** - * @generated from field: optional gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings workspace_timeout_settings = 9; + * @generated from field: optional gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings workspace_timeout_settings = 8; */ workspaceTimeoutSettings?: UpdateUserRequest_WorkspaceTimeoutSettings; @@ -145,8 +275,7 @@ export class UpdateUserRequest extends Message { { no: 5, name: "email_address", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, { no: 6, name: "editor_settings", kind: "message", T: EditorReference, opt: true }, { no: 7, name: "email_notification_settings", kind: "message", T: UpdateUserRequest_EmailNotificationSettings, opt: true }, - { no: 8, name: "workspace_autostart_options", kind: "message", T: UpdateUserRequest_WorkspaceAutostartOption, repeated: true }, - { no: 9, name: "workspace_timeout_settings", kind: "message", T: UpdateUserRequest_WorkspaceTimeoutSettings, opt: true }, + { no: 8, name: "workspace_timeout_settings", kind: "message", T: UpdateUserRequest_WorkspaceTimeoutSettings, opt: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): UpdateUserRequest { @@ -312,67 +441,6 @@ export class UpdateUserRequest_EmailNotificationSettings extends Message { - /** - * @generated from field: string clone_url = 1; - */ - cloneUrl = ""; - - /** - * @generated from field: string organization_id = 2; - */ - organizationId = ""; - - /** - * @generated from field: string workspace_class = 3; - */ - workspaceClass = ""; - - /** - * @generated from field: gitpod.v1.EditorReference editor_settings = 4; - */ - editorSettings?: EditorReference; - - /** - * @generated from field: string region = 5; - */ - region = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.v1.UpdateUserRequest.WorkspaceAutostartOption"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "clone_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "workspace_class", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "editor_settings", kind: "message", T: EditorReference }, - { no: 5, name: "region", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): UpdateUserRequest_WorkspaceAutostartOption { - return new UpdateUserRequest_WorkspaceAutostartOption().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): UpdateUserRequest_WorkspaceAutostartOption { - return new UpdateUserRequest_WorkspaceAutostartOption().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): UpdateUserRequest_WorkspaceAutostartOption { - return new UpdateUserRequest_WorkspaceAutostartOption().fromJsonString(jsonString, options); - } - - static equals(a: UpdateUserRequest_WorkspaceAutostartOption | PlainMessage | undefined, b: UpdateUserRequest_WorkspaceAutostartOption | PlainMessage | undefined): boolean { - return proto3.util.equals(UpdateUserRequest_WorkspaceAutostartOption, a, b); - } -} - /** * @generated from message gitpod.v1.UpdateUserRequest.WorkspaceTimeoutSettings */